<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors','On');
if (!defined('BASEPATH'))
    exit('No direct script access allowed');

/**
 *  Home Class  
 *  
 * @package CMS v2.0 
 * @subpackage News  
 * @author Vui Nguyen - 09/04/2013
 * @link http://joomlavui.info
 */
class BuyCard extends CI_Controller {

    /**
     * Contrust class
     *  
     * @access public 
     */
    public function __construct() {
		
        parent::__construct();
        $this->load->helper('url');		                
        $this->load->library('smarty3', '', 'smarty');        
        $this->load->library('captcha');
        $this->load->library('session');
        $this->load->library('email');
        // load models user,billing
        $this->load->model('kpay/db_user_model');
        $this->db_user_model		= new db_user_model();
        $this->load->model('kpay/db_billing_model');
        $this->db_billing_model		= new db_billing_model();
        //
        include APPPATH . 'libraries/pay/login_service.php';        
        $this->login_lib 		= new login_service();
        //
        require_once APPPATH . 'libraries/pay/nganluong/vi/include/lib/nusoap.php';
    }

    public function index() { //die("");
        //
        $msg				= "";						
        // chọn loại thẻ
        // echo form_dropdown('name', $array_data, NULL, 'id="company" class="some-class"');
        $cardtype_data		= $this->db_user_model->getCardCategories(); // chọn loại thẻ
        if($cardtype_data){
            foreach ($cardtype_data as $tmp) {
                $cardtype[$tmp->catID] = $tmp->catName;
            }
        }				
        // end get session from epay
        $user_info = $this->session->userdata('user_info');
        if($user_info)
            $this->smarty->assign("user_info", $user_info);
        //
        $this->smarty
                    //->assign("user_info", $this->user_info)
                    ->assign("cardtype" , $cardtype)
                    ->assign("msg"		, $msg)
                    ->display('template/buycard/home');
    }		
	/////////////////////////////START BUY CARD BY EPAY///////////////////////////////        
        /// THANH TOÁN MUA THẺ BỞI VÍ ĐIỆN TỬ
	function buycard_vidientu(){
            redirect("wallet"); // redirect to vi dien tu
        }
        /// THANH TOÁN MUA THẺ BỞI VÍ ĐIỆN TỬ
	function buycard_vi()
	{
            //	
            $msgs	= array();
            $msg	= "";
            $code 	= -1;
            $Coin	= "";
            $card_info ="";
            $flag     = 1;
            // POST VALUE
            $data['catID'] 		= $this->input->post('catID');
            $data['provider'] 		= $this->input->post('providerID');
            $data['productID']		= $this->input->post('productID');
            $data['quantity']		= $this->input->post('quantity');
            $data['cardprice']		= $this->input->post('cardprice');
            $data['paymethod']		= $this->input->post('paymethod');
            /// SAVE SESSION DATA
            $_SESSION['pay']['store_info_init']= $data;				
            // Check catID,ProviderID,Product ID valid.		
            $tmp3					= $this->db_user_model->checkCardProduct($data['productID']);
            if(!$tmp3){
                    $code 		= -1;
                    $msgs[] 	= "Thông tin mua thẻ không hợp lệ.";
            }		
            // Get Card Info
            $card_info				= $this->db_user_model->getCardProductsInfo($data['productID']);		
            if(!$card_info){
                    $code 		= -1;
                    $msgs[] 	= "Thông tin mua thẻ không hợp lệ.1.0.";
            }		
            // Check tiền còn lại trong ví.
            // Get user info
            $user_info = $this->session->userdata('user_info');
            // Nếu chưa login thì redirect qua form nhập thông tin.		
            if(!$user_info){
                    $code 		= -1;
                    $msgs[] 	= "Vui lòng đăng nhập.";
                    //
                    $uID            = "";
                    $username	= "";
                    $customerID 	= "";
                    $email 		= "";
                    //redirect("account/login"); // qua form nhập thông tin user
            }else{ // else thì check số tiền trong ví.
                    $uID 			= $user_info[0]->uID;
                    $username		= $user_info[0]->username;
                    $customerID             = $user_info[0]->customerID;
                    $email 			= $user_info[0]->email;	
                    $coin_info		= $this->db_user_model->getUserByCustomerID($customerID);
                    if($coin_info)
                        $Coin 		= $coin_info[0]->Coin;	
            }
            // check valid coin
            if($Coin*TI_LE_QUI_DOI < $data['cardprice']){
                    $code 		= -1;
                    $msgs[] 	= "Số dư trong tài khoản không đủ để thực hiện giao dịch!";	
            }
            // code here
            /////////////////////////////////////	
            $log_init			= "";// khởi tạo dữ liệu			
            $log_init['ip'] 		= get_real_ip();
            $log_init['created'] 		= time();
            $log_init['date'] 		= date("Y-m-d H:i:s");
            $log_init['transID'] 		= TRANSID_MUATHE.$data['productID']."_".$data['quantity']."_".$log_init['created'];
            $log_init['catID'] 		= $data['catID'];
            $log_init['provider'] 		= $data['provider'];
            $log_init['productID'] 		= $data['productID'];
            $log_init['productValue'] 	= $card_info[0]->productName;
            $log_init['quantity'] 		= $data['quantity'];
            $log_init['cardprice'] 		= $data['cardprice'];
            $log_init['paymethod']		= $data['paymethod'];
            $log_init['typeUse']		= TRANSID_TYPE_USE_MUATHE;
            // log extra
            $log_init['coin'] 		= $Coin;
            $log_init['uID'] 		= $uID;
            $log_init['username'] 		= $username;
            $log_init['customerID'] 	= $customerID;
            $log_init['email'] 		= $email;
            // CHECK PHAN BIET XEM USER SU DUNG VI DOANH NGHIEP HAY VI CA NHAN
            $log_init['money_use_vi'] 		= "1"; // 1 la vi ca nhan, 2 la vi doanh nghiep
            // check xem cos looi hay ko check xem cồi lồồi hay ko 
            if(!count($msgs)) {	                        
                    // save log đợt 1
                    // START - SAU KHI NẠP THẺ LẬP TỨC KHỞI TẠO LOG GIAO DỊCH CHO DÙ SAI HAY ĐÚNG.
                    // E1.SAVE LOG KHỞI TẠO GIAO DỊCH TRƯỚC KHI ĐĂNG NHẬP VÀO EPAY
                    $aParamCardLog=array(                                
                                    'uID' 			=> $uID,				
                                    'username'		=> $username,
                                    'email' 		=> $email,
                                    'customerID'            => $customerID,
                                    'transID' 		=> $log_init['transID'],
                                    'catID' 		=> $log_init['catID'],
                                    'providerID'            => $log_init['provider'],
                                    'productID'             => $log_init['productID'],
                                    'productValue'          => $log_init['productValue'],
                                    'quantity' 		=> $log_init['quantity'],
                                    'cardprice'             => $log_init['cardprice'],
                                    'typeUse' 		=> $log_init['typeUse'],
                                    "date"			=> $log_init['date'],
                                    'created' 		=> $log_init['created'],
                                    'statusDesc'            => "Khởi tạo",
                                    'status' 		=> "-2",
                                    'ip' 			=> $log_init['ip']
                            );
                    $log1 					= $this->db_billing_model->ano_logbilling_init($aParamCardLog); //ok		
                    // END - E1.SAU KHI NẠP THẺ LẬP TỨC KHỞI TẠO LOG GIAO DỊCH CHO DÙ SAI HAY ĐÚNG.
                    // CO THE VIET CONTROLL TU CHO NAY DANH CHO 3 KHO THE// EPAY,FPT,SIMPAY,....
                    $this->getCardFromEpayStore($data,$log_init,$card_info,$msgs,$flag);// goi kho the epay		
                    //$this->getCardFromSimpayStore($log_init, $msgs);//goi kho the simpay
            }// end check count msg

            //echo json_encode(array('code'=>$code, 'msg'=>$msgs,'temp'=>$temp));exit;
            foreach ($msgs as $m){
                    $msg.="$m<br/>";			
            }
            $msg	= json_encode(array("code"=>$code,"msg"=>$msg));
            echo $msg;exit; // Neu bi loi thi chay toi day va tra loi ve
	}
        // CHECK GET MA THE WHEN PAYMENT CALLBACK
        function buycard_getCardCodeCallBack($transID=null,&$card_info=null){
            if($transID){
                // check ton tai truowcs khi check trang thai giao dich
                $trans_status = $this->db_billing_model->checkTransIDStatus($transID);// =1ok;else:false                
                if ($trans_status){ // if ton tai giao dich
                    // check session va status cua giao dich                            
                    $tmp_status = $this->db_billing_model->getTransIDStatus($transID);// =1ok;else:false
                    
                    if($tmp_status!=1){ // get card code before 
                        if($_SESSION['cardReceived']!=100){
                            //echo $_SESSION['cardReceived'];//exit;
                            // CHUYỂN QUA BƯỚC GET MÃ THẺ
                            $card_info	= json_decode($this->buycard_phuong_thuc_thanh_toan());
                            $_SESSION['card_info'] = $card_info;
                            $_SESSION['cardReceived']= 100; // ko else
                        }
                    }
                    
                    //print_r($card_info);exit;
               }     
            }
        }
	/// BUY CARD FOR SMARTLINK/VÍ CỘNG ĐỒNG KHÁC (KHONG DUNG VI DIEN TU MUATHE.VN)	
        // DANH CHO TRUOWNG HOP POPUP NEN GET SESSION
	//function buycard_open_payment()
       function buycard_phuong_thuc_thanh_toan() 
	{
		//	
		$msgs	= array();
		$msg	= "";
		$code 	= -1;
		$Coin	= "";
              $flag  = FALSE;
		if(isset($_SESSION['pay']['store_info_init']))
		{			
			$pay_store_info_init = $_SESSION['pay']['store_info_init'];
			//print_r($pay_store_info_init);exit;
			// GET VALUE FROM SESSION
			$data['catID'] 			= $pay_store_info_init['catID'];
			$data['provider'] 		= $pay_store_info_init['provider'];
			$data['productID']		= $pay_store_info_init['productID'];
			$data['quantity']		= $pay_store_info_init['quantity'];
			$data['cardprice']		= $pay_store_info_init['cardprice'];
			$data['paymethod']		= $pay_store_info_init['paymethod'];	
		}else{
                    $code 		= -1;
                    $msgs[] 	= "Thông tin mua thẻ không hợp lệ.B.0.1";
                }				
		// Check catID,ProviderID,Product ID valid.		
		$tmp3					= $this->db_user_model->checkCardProduct($data['productID']);
		if(!$tmp3){
			$code 		= -1;
			$msgs[] 	= "Thông tin mua thẻ không hợp lệ.B.0.2";
		}		
		// Get Card Info
		$card_info				= $this->db_user_model->getCardProductsInfo($data['productID']);		
		if(!$card_info){
			$code 		= -1;
			$msgs[] 	= "Thông tin mua thẻ không hợp lệ.B.0.3";
		}		                
		// if email will get user info else call session            
                if(isset($Email)){
                    $_SESSION['pay']['store_info_init']['Email'] = $Email;
                    $user_info = $this->db_user_model->getUserByEmail($Email);
                    if($user_info){
                        $uID 			= $user_info[0]->uID;
                        $username                   = $user_info[0]->username;
                        $customerID                 = $user_info[0]->customerID;
                        $email 			= $user_info[0]->email;	
                    }    
                }else{
                    // Get user info
                    $user_info = $this->session->userdata('user_info');
                    if($user_info){                    
                        $uID 			= $user_info[0]->uID;
                        $username                   = $user_info[0]->username;
                        $customerID                 = $user_info[0]->customerID;
                        $email 			= $user_info[0]->email;	                    
                    }else{
                        $code 		= -1;
                        $msgs[]             = "Thông tin tài khoản không hợp lệ.";
                    }
                } 
		// code here
		/////////////////////////////////////	
		$log_init					= "";// khởi tạo dữ liệu			
		$log_init['ip'] 			= get_real_ip();
		$log_init['created'] 		= time();
		$log_init['date'] 			= date("Y-m-d H:i:s");
		$log_init['transID'] 		= TRANSID_MUATHE.$data['productID']."_".$data['quantity']."_".$log_init['created'];
		$log_init['catID'] 			= $data['catID'];
		$log_init['provider'] 		= $data['provider'];
		$log_init['productID'] 		= $data['productID'];
		$log_init['productValue'] 	= $card_info[0]->productName;
		$log_init['quantity'] 		= $data['quantity'];
		$log_init['cardprice'] 		= $data['cardprice'];
		$log_init['paymethod']		= $data['paymethod'];
		$log_init['typeUse']		= TRANSID_TYPE_USE_MUATHE;
              /// user info
              $log_init['uID']		= $uID;
              $log_init['username']		= $username;
              $log_init['customerID']	= $customerID;
              $log_init['email']		= $email;
              ///
		// START - SAU KHI NẠP THẺ LẬP TỨC KHỞI TẠO LOG GIAO DỊCH CHO DÙ SAI HAY ĐÚNG.
		// E1.SAVE LOG KHỞI TẠO GIAO DỊCH TRƯỚC KHI ĐĂNG NHẬP VÀO EPAY
		$aParamCardLog=array(                                
				'uID' 			=> $uID,				
				'username'		=> $username,
				'email' 		=> $email,
				'customerID' 	=> $customerID,
				'transID' 		=> $log_init['transID'],
				'catID' 		=> $log_init['catID'],
				'providerID'	=> $log_init['provider'],
				'productID' 	=> $log_init['productID'],
				'productValue' 	=> $log_init['productValue'],
				'quantity' 		=> $log_init['quantity'],
				'cardprice' 	=> $log_init['cardprice'],
				'typeUse' 		=> $log_init['typeUse'],
				"date"			=> $log_init['date'],
				'created' 		=> $log_init['created'],
				'statusDesc' 	=> "Khởi tạo",
				'status' 		=> "-2",
				'ip' 			=> $log_init['ip']
			);						
		if(!count($msgs)) {	
			// save log đợt 1
			$log1 					= $this->db_billing_model->ano_logbilling_init($aParamCardLog); //ok		
			// END - E1.SAU KHI NẠP THẺ LẬP TỨC KHỞI TẠO LOG GIAO DỊCH CHO DÙ SAI HAY ĐÚNG.
                        // CO THE VIET CONTROLL TU CHO NAY DANH CHO 3 KHO THE// EPAY,FPT,SIMPAY,....
                        $this->getCardFromEpayStore($data,$log_init,$card_info, $msgs,$flag);// goi kho the epay		
                        //$this->getCardFromSimpayStore($log_init, $msgs);//goi kho the simpay						
		}// end check count msg
		foreach ($msgs as $m){
			$msg.="$m<br/>";			
		}
		$msg	= json_encode(array("code"=>$code,"msg"=>$msg));
		return $msg;//exit;
	}
	////// THANH TOÁN MUA THẺ BỞI PREPAY
	function buycard_paygate(){
		// code here		                
		// POST VALUE
		$data['catID'] 			= $this->input->post('catID');
		$data['provider'] 		= $this->input->post('providerID');
		$data['productID']		= $this->input->post('productID');
		$data['quantity']		= $this->input->post('quantity');
		$data['cardprice']		= $this->input->post('cardprice');
		$data['paymethod']		= $this->input->post('paymethod');
		$_SESSION['pay']['store_init']= $data;
		//print_r($pay_store_info_init);
                $user_info = $this->session->userdata('user_info');
		if($user_info)
        	$this->smarty->assign("user_info", $user_info);
		//		
		$this->smarty
                            //->assign("card_info" , $card_info)
                            //->assign("msg"		, json_decode($msg))
                            ->display('template/buycard/home_paygate');
	}
        ////// THANH TOÁN MUA THẺ BỞI PREPAY
	function buycard_prepay(){
		// code here		
		// POST VALUE
		$data['catID'] 			= $this->input->post('catID');
		$data['provider'] 		= $this->input->post('providerID');
		$data['productID']		= $this->input->post('productID');
		$data['quantity']		= $this->input->post('quantity');
		$data['cardprice']		= $this->input->post('cardprice');
		$data['paymethod']		= $this->input->post('paymethod');
		$_SESSION['cardReceived']		= "-1";
		$_SESSION['pay']['store_init']	= $data;
		//print_r($pay_store_info_init);
	}
	/**********************************START DOANH NGHIEP*******************************************/
        function buycard_doanhnghiep($uIDDN=NULL){  
            //	
            $_SESSION['cardReceived'] = - 100;// start session card.
            $msgs	= array();
            $msg	= "";
            $code 	= -1;
            $Coin       = "";
            $flag       = 2;
            $time	= time();            
            $data       = "";
            //
            $user_info = $this->session->userdata('user_info');
            if($user_info){                    
                $uID 			= $user_info[0]->uID;
                $username                   = $user_info[0]->username;
                $customerID                 = $user_info[0]->customerID;
                $email 			= $user_info[0]->email;	                    
            }else{
                $code 		= -1;
                $msgs[]             = "Thông tin tài khoản không hợp lệ.";
            }
            //
            if($uIDDN){
                // 1.CHECK PHUONG THUC
                // 2.CHECK NHA MANG
                // 3.CHECK SO TIEN LIMIT
                // 4.CHECK SO DIEN THOAI DANG KY (DANH CHO TOPUP)
                // 5.CHECK SO TIEN DOANH NGHIEP CO DU HAY KO
                // 6.CHECK THUOC DOANH NGHIEP HAY KO.
                // code here
                $user_info_dn = $this->db_user_model->getUserById($uIDDN);                
                if($user_info_dn){
                    $Email      = $user_info_dn[0]->email;
                    $_SESSION['pay']['store_info_init']['Email'] = $Email;                    
                    //
                    $pay_store_info_init	= "";
                    if(isset($_SESSION['pay']['store_info_init'])){
                        $pay_store_info_init = $_SESSION['pay']['store_info_init'];                        
                        // POST VALUE
                        $data['catID'] 		= $pay_store_info_init['catID'];
                        $data['provider'] 		= $pay_store_info_init['provider'];
                        $data['productID']		= $pay_store_info_init['productID'];
                        $data['quantity']		= $pay_store_info_init['quantity'];
                        $data['cardprice']		= $pay_store_info_init['cardprice'];
                        $data['paymethod']		= $pay_store_info_init['paymethod'];
                    }else{
                        $code 		= -1;
                        $msgs[] 	= "Dữ liệu khởi tạo không hợp lệ.";
                    }
                    $card_info			= $this->db_user_model->getCardProductsInfo($pay_store_info_init['productID']);		
                    if(!$card_info){
                        $code 		= -1;
                        $msgs[] 	= "Thông tin mua thẻ không hợp lệ.1.0.";
                    }
                    //5.CHECK SO TIEN DOANH NGHIEP CO DU HAY KO
                    // get coin
                    $Coin 		= $user_info_dn[0]->Coin;	
                    // check valid coin
                    if($Coin*TI_LE_QUI_DOI < $pay_store_info_init['cardprice']){
                            $code 		= -1;
                            $msgs[] 	= "Số dư trong tài khoản doanh nghiệp không đủ để thực hiện giao dịch!";	
                    }
                    if(!count($msgs)){
                        // code here				
                        // post value and redirect url (FIXED CỐ ĐỊNH, KHÔNG ĐƯỢC THÊM VÀO BẤT CỨ GÌ)                    
                        //$data['vpc_Amount']		= $pay_store_info_init['cardprice'];
                        $data['transID']= TRANSID_PAY_BY_VI_DOANHNGHIEP.$pay_store_info_init['productID']."_".$pay_store_info_init['quantity']."_".DATE;//vpc_MerchTxnRef;

                        // SAVE LOG KHỞI TẠO
                        /////////////////////////////////////	
                        $log_init					= "";// khởi tạo dữ liệu			
                        $log_init['ip'] 			= get_real_ip();
                        $log_init['created'] 		= $time;
                        $log_init['date'] 			= date("Y-m-d H:i:s");
                        $log_init['transID'] 		= $data['transID'];
                        $log_init['catID'] 			= $pay_store_info_init['catID'];
                        $log_init['provider'] 		= $pay_store_info_init['provider'];
                        $log_init['productID'] 		= $pay_store_info_init['productID'];
                        $log_init['productValue'] 	= $card_info[0]->productName;
                        $log_init['quantity'] 		= $pay_store_info_init['quantity'];
                        $log_init['cardprice'] 		= $pay_store_info_init['cardprice'];
                        $log_init['paymethod']		= $pay_store_info_init['paymethod'];
                        $log_init['typeUse']		= TRANSID_TYPE_USE_VI_DOANHNGHIEP;
                        //
                        $log_init['uIDDN'] 		= $uIDDN;
                        // log extra
                        $log_init['coin'] 		= $Coin;
                        $log_init['uID'] 		= $uID;
                        $log_init['username'] 		= $username;
                        $log_init['customerID'] 	= $customerID;
                        $log_init['email'] 		= $email;
                        // CHECK PHAN BIET XEM USER SU DUNG VI DOANH NGHIEP HAY VI CA NHAN
                        $log_init['money_use_vi'] 		= "2"; // 1 la vi ca nhan, 2 la vi doanh nghiep
                        // E1.SAVE LOG KHỞI TẠO GIAO DỊCH TRƯỚC KHI ĐĂNG NHẬP VÀO EPAY
                        $aParamCardLog=array(                                
                                        'uID' 			=> $uID,
                                        'uIDDN' 		=> $uIDDN,// xai tien cua dn
                                        'username'		=> $username,
                                        'email' 		=> $email,
                                        'customerID'            => $customerID,
                                        'transID' 		=> $log_init['transID'],                                        
                                        ///
                                        'catID' 		=> $log_init['catID'],
                                        'providerID'	=> $log_init['provider'],
                                        'productID' 	=> $log_init['productID'],
                                        'productValue' 	=> $log_init['productValue'],
                                        'quantity' 		=> $log_init['quantity'],
                                        'cardprice' 	=> $log_init['cardprice'],
                                        'paySource' 	=> VIDOANHNGHIEP,
                                        'typeUse' 		=> $log_init['typeUse'],
                                        "date"			=> $log_init['date'],
                                        'created' 		=> $log_init['created'],
                                        'statusDesc' 	=> "Khởi tạo",
                                        'status' 		=> "-2",
                                        'ip' 			=> $log_init['ip']
                                );		
                        // 
                        $log1 	= $this->db_billing_model->ano_logbilling_init($aParamCardLog); //ok
                        // CO THE VIET CONTROLL TU CHO NAY DANH CHO 3 KHO THE// EPAY,FPT,SIMPAY,....
                        $this->getCardFromEpayStore($data,$log_init,$card_info,$msgs,$flag);// goi kho the epay		
                        //$this->getCardFromSimpayStore($log_init, $msgs);//goi kho the simpay
                    }
                    //echo json_encode(array('code'=>$code, 'msg'=>$msgs,'temp'=>$temp));exit;
                    foreach ($msgs as $m){
                            $msg.="$m<br/>";			
                    }
                    $msg	= json_encode(array("code"=>$code,"msg"=>$msg));
                    //echo $msg;exit; // Neu bi loi thi chay toi day va tra loi ve
                    // *******************
                    // END OF MAIN PROGRAM
                    // *******************			
                    $user_info = $this->session->userdata('user_info');
                    if($user_info)
                        $this->smarty->assign("user_info", $user_info);
                    if(isset($_SESSION['card_info']))
                        $card_info  = $_SESSION['card_info'];                
                    //
                    //print_r($card_info);exit;
                    $this->smarty->assign('msg'		, json_decode($msg));
                    $this->smarty->assign('card_info'		, $card_info);
                    $this->smarty->view('template/pages_live/partner','partner');
                    $this->smarty->view('template/pages_live/buycard_info','content');
                    $this->smarty->display('template/frontend_live/home');
                }
		////
            }else{
                // return home
                redirect("home");
            }            
        }
        /**********************************END DOANH NGHIEP*******************************************/        
        /**********************************START SMARTLINK*******************************************/
	////////////////////// THANH TOÁN MUA THẺ BỞI SMARTLINK //////////////////////
	function buycard_smartlink($Email=NULL){
		//
		include APPPATH . 'libraries/pay/smartlink/config_sm.php'; // thư viện smartlink
		//	
                $_SESSION['cardReceived'] = - 100;// start session card.
		$msgs	= array();
		$msg	= "";
		$code 	= -1;		
		$time	= time();
                // check if get email
                //$email 			= $this->input->post('email');
                // if email will get user info else call session
                if($Email){
                    $_SESSION['pay']['store_info_init']['Email'] = $Email;
                    $user_info = $this->db_user_model->getUserByEmail($Email);
                    if($user_info){
                        $uID 			= $user_info[0]->uID;
                        $username                   = $user_info[0]->username;
                        $customerID                 = $user_info[0]->customerID;
                        $email 			= $user_info[0]->email;	
                    }    
                }else{
                    // Get user info
                    $user_info = $this->session->userdata('user_info');
                    if($user_info){                    
                        $uID 			= $user_info[0]->uID;
                        $username                   = $user_info[0]->username;
                        $customerID                 = $user_info[0]->customerID;
                        $email 			= $user_info[0]->email;	                    
                    }else{
                        $code 		= -1;
                        $msgs[]             = "Thông tin tài khoản không hợp lệ.";
                    }
                } 
		////
                //print_r($_SESSION['pay']['store_info_init']);exit;
		$pay_store_info_init	= "";
		if(isset($_SESSION['pay']['store_info_init'])){
			$pay_store_info_init = $_SESSION['pay']['store_info_init'];
		}else{
			$code 		= -1;
			$msgs[] 	= "Dữ liệu khởi tạo không hợp lệ.";
		}
		$card_info				= $this->db_user_model->getCardProductsInfo($pay_store_info_init['productID']);		
		if(!$card_info){
			$code 		= -1;
			$msgs[] 	= "Thông tin mua thẻ không hợp lệ.1.0.";
		}
                if(!count($msgs)){
                    // code here				
                    // post value and redirect url (FIXED CỐ ĐỊNH, KHÔNG ĐƯỢC THÊM VÀO BẤT CỨ GÌ)
                    $data['Title'] 			= "PHP Merchant";
                    //$data['xxx'] 			= "PHP Merchant";
                    $data['vpc_AccessCode'] = vpc_AccessCode;
                    $data['vpc_Amount']		= $pay_store_info_init['cardprice'];
                    $data['vpc_BackURL']	= vpc_BackURL;
                    $data['vpc_Command']	= vpc_Command;
                    $data['vpc_Currency']	= vpc_Currency;
                    $data['vpc_Locale']		= vpc_Locale;
                    $data['vpc_MerchTxnRef']= TRANSID_PAY_BY_SMARTLINK.$pay_store_info_init['productID']."_".$pay_store_info_init['quantity']."_".DATE;//vpc_MerchTxnRef;
                    $data['vpc_Merchant']	= vpc_Merchant;
                    $data['vpc_OrderInfo']	= vpc_OrderInfo;
                    $data['vpc_ReturnURL']	= vpc_ReturnURL;
                    $data['vpc_Version']	= vpc_Version;
                    // SAVE LOG KHỞI TẠO
                    /////////////////////////////////////	
                    $log_init					= "";// khởi tạo dữ liệu			
                    $log_init['ip'] 			= get_real_ip();
                    $log_init['created'] 		= $time;
                    $log_init['date'] 			= date("Y-m-d H:i:s");
                    $log_init['transID'] 		= $data['vpc_MerchTxnRef'];
                    $log_init['catID'] 			= $pay_store_info_init['catID'];
                    $log_init['provider'] 		= $pay_store_info_init['provider'];
                    $log_init['productID'] 		= $pay_store_info_init['productID'];
                    $log_init['productValue'] 	= $card_info[0]->productName;
                    $log_init['quantity'] 		= $pay_store_info_init['quantity'];
                    $log_init['cardprice'] 		= $pay_store_info_init['cardprice'];
                    $log_init['paymethod']		= $pay_store_info_init['paymethod'];
                    $log_init['typeUse']		= TRANSID_TYPE_USE_PAY;
                    // E1.SAVE LOG KHỞI TẠO GIAO DỊCH TRƯỚC KHI ĐĂNG NHẬP VÀO EPAY
                    $aParamCardLog=array(                                
                                    'uID' 			=> $uID,				
                                    'username'		=> $username,
                                    'email' 		=> $email,
                                    'customerID' 	=> $customerID,
                                    'transID' 		=> $log_init['transID'],
                                    // payment info
                                    'merchantTransactionRef' 	=> $data['vpc_MerchTxnRef'],
                                    'transactionOrderInfo'		=> $data['vpc_OrderInfo'],
                                    ///
                                    'catID' 		=> $log_init['catID'],
                                    'providerID'	=> $log_init['provider'],
                                    'productID' 	=> $log_init['productID'],
                                    'productValue' 	=> $log_init['productValue'],
                                    'quantity' 		=> $log_init['quantity'],
                                    'cardprice' 	=> $log_init['cardprice'],
                                    'paySource' 	=> "smartlink",
                                    'typeUse' 		=> $log_init['typeUse'],
                                    "date"			=> $log_init['date'],
                                    'created' 		=> $log_init['created'],
                                    'statusDesc' 	=> "Khởi tạo",
                                    'status' 		=> "-2",
                                    'ip' 			=> $log_init['ip']
                            );		
                    // 
                    $log1 					= $this->db_billing_model->ano_logbilling_init($aParamCardLog); //ok
                    // Define Constants
                    // ----------------
                    // This is secret for encoding the MD5 hash
                    // This secret will vary from merchant to merchant
                    // To not create a secure hash, let SECURE_SECRET be an empty string - ""
                    // $SECURE_SECRET = "secure-hash-secret";
                    $SECURE_SECRET = Secure_Secret;

                    // add the start of the vpcURL querystring parameters
                    $vpcURL = virtualPaymentClientURL . "?";

                    // Remove the Virtual Payment Client URL from the parameter hash as we 
                    // do not want to send these fields to the Virtual Payment Client.
                    unset($_POST["virtualPaymentClientURL"]); 
                    unset($_POST["SubButL"]);

                    // Create the request to the Virtual Payment Client which is a URL encoded GET
                    // request. Since we are looping through all the data we may as well sort it in
                    // case we want to create a secure hash and add it to the VPC data if the
                    // merchant secret has been provided.
                    $md5HashData = $SECURE_SECRET;
                    //ksort ($_POST);
                    ksort ($data);

                    // set a parameter to show the first pair in the URL
                    $appendAmp = 0;
                    //print_r ($_POST);exit;
                    //foreach($_POST as $key => $value) {
                    foreach($data as $key => $value) {			
                            // create the md5 input and URL leaving out any fields that have no value
                            if (strlen($value) > 0) {

                                    // this ensures the first paramter of the URL is preceded by the '?' char
                                    if ($appendAmp == 0) {
                                            $vpcURL .= urlencode($key) . '=' . urlencode($value);
                                            $appendAmp = 1;
                                    } else {
                                            $vpcURL .= '&' . urlencode($key) . "=" . urlencode($value);
                                    }
                                    $md5HashData .= $value;
                            }
                    }

                    // Create the secure hash and append it to the Virtual Payment Client Data if
                    // the merchant secret has been provided.
                    if (strlen($SECURE_SECRET) > 0) {
                            $vpcURL .= "&vpc_SecureHash=" . strtoupper(md5($md5HashData));
                    }

                    // FINISH TRANSACTION - Redirect the customers using the Digital Order
                    // ===================================================================
                    //header("Location: ".$vpcURL);
                    redirect($vpcURL);
                }else{
                    foreach ($msgs as $m){
			$msg.="$m<br/>";			
                    }
                    $msg	= json_encode(array("code"=>$code,"msg"=>$msg));
                    $user_info = $this->session->userdata('user_info');
                    if($user_info)
                        $this->smarty->assign("user_info", $user_info);
                    //		
                    $this->smarty
                                //->assign("card_info" , $card_info)
                                ->assign("msg"		, json_decode($msg))
                                ->display('template/buycard/home_info');
                }
	}
	////// THANH TOÁN MUA THẺ BỞI SMARTLINK
	function buycard_smartlink_callback(){
		// code here		
		$msg				= "";
		$msgs				= array();
		$success			= "";	
		$card_info			= "";
		//
		//print_r($_GET);exit;
		// code here (sau khi thanh toán thành công, tiến hành gọi hàm lấy mã thẻ cho user)
		include APPPATH . 'libraries/pay/smartlink/config_sm.php';
		//$pay_store_info_init= $data;
		$SECURE_SECRET = Secure_Secret;
		// If there has been a merchant secret set then sort and loop through all the
		// do not want to include this field in the hash calculation
		$vpc_Txn_Secure_Hash = $_GET["vpc_SecureHash"];
		unset($_GET["vpc_SecureHash"]); 
		// set a flag to indicate if hash has been validated
		$errorExists = false;
		if (strlen($SECURE_SECRET) > 0 && $_GET["vpc_ResponseCode"] != "No Value Returned") {
		
			$md5HashData = $SECURE_SECRET;
		
			// sort all the incoming vpc response fields and leave out any with no value
			foreach($_GET as $key => $value) {
				if ($key != "vpc_SecureHash" or strlen($value) > 0) {
					$md5HashData .= $value;
				}
			}
			// Validate the Secure Hash (remember MD5 hashes are not case sensitive)
			// This is just one way of displaying the result of checking the hash.
			// In production, you would work out your own way of presenting the result.
			// The hash check is all about detecting if the data has changed in transit.
			if (strtoupper($vpc_Txn_Secure_Hash) == strtoupper(md5($md5HashData))) {
				// Secure Hash validation succeeded, add a data field to be displayed
				// later.
				//$hashValidated = "<FONT color='#00AA00'><strong>CORRECT</strong></FONT>";
				$hashValidated	= 1; // valid hash
			}else {
				// Secure Hash validation failed, add a data field to be displayed
				// later.
				//$hashValidated = "<FONT color='#FF0066'><strong>INVALID HASH</strong></FONT>";
				$hashValidated	= -100; // invalid hash // định hack hệ thống hả, hihi
				$errorExists 	= true;
				$code 			= -1;
				$msgs[] 		= "Dữ liệu không hợp lệ.H001.";
			}
		} else {
			// Secure Hash was not validated, add a data field to be displayed later.
			//$hashValidated = "<FONT color='orange'><strong>Not Calculated - No 'SECURE_SECRET' present.</strong></FONT>";
				$code 			= -1;
				$msgs[] 		= "Lỗi hệ thống.H002."; //Not Calculated - No 'SECURE_SECRET' present
		}
		
		// Define Variables
		// ----------------
		// Extract the available receipt fields from the VPC Response
		// If not present then let the value be equal to 'No Value Returned'
		
		// Standard Receipt Data
		$version         = $this->null2unknown(($_GET["vpc_Version"]));
		$locale          = $this->null2unknown(($_GET["vpc_Locale"]));
		$command         = $this->null2unknown(($_GET["vpc_Command"]));
		$merchantID      = $this->null2unknown(($_GET["vpc_Merchant"]));
		$merchTxnRef     = $this->null2unknown(($_GET["vpc_MerchTxnRef"]));		
		$amount          = $this->null2unknown(($_GET["vpc_Amount"]));
		$currencyCode    = $this->null2unknown(($_GET["vpc_CurrencyCode"]));
		$orderInfo       = $this->null2unknown(($_GET["vpc_OrderInfo"]));
		$txnResponseCode = $this->null2unknown(($_GET["vpc_ResponseCode"]));
		//txnResponseCode: Có giá trị bằng "0" (zero) khi giao dịch thành công và được cấp phép thanh toán bởi
		// Ngân hàng phát hành. Các giá trị khác đều có nghĩa là không thành công
		//
		$errorMessage	 = $this->getResponseDescription($txnResponseCode);
		$transactionNo   = $this->null2unknown(isset($_GET["vpc_TransactionNo"]));
		//exit;
		//$additionData    = $this->null2unknown($_GET["vpc_AdditionData"]);
		$batchNo         = $this->null2unknown(isset($_GET["vpc_BatchNo"]));
		//$acqResponseCode = $this->null2unknown($_GET["vpc_AcqResponseCode"]);
		//$message         = $this->null2unknown($_GET["vpc_Message"]);
		//echo $hashValidated;exit;
		if(!count($msgs)) {
                    // check thông tin mã hash trả về và responsecode và 1 số điều kiện khác nếu có. &&&&
                    if($hashValidated==1 && $txnResponseCode==0){ // success			
                        try{   
                            ///////////////////////////////////////////////////////
                            // check chỉ get 1 lần duy nhất ứng với mỗi giao dịch.
                            // check session va status cua giao dich                            
                            $this->buycard_getCardCodeCallBack($merchTxnRef, $card_info);//goi kho the simpay
                            /////////////////////////////////////////////////////// 
                            // E3.START SAVE LOG SUCCESS
                            $aParamCardLog=array(
                                    'transID' 		=> $merchTxnRef,// key để biết được record sẽ updated
                                    'partnerTransID'    => $merchTxnRef,// key để biết được record sẽ updated
                                    'transIdRes'            => $merchTxnRef,// key để biết được record sẽ updated
                                    //
                                    // payment info
                                    'transactionOrderInfo'	=> $orderInfo,
                                    'transactionNumber'		=> $transactionNo,
                                    'batchNumber'			=> $batchNo,
                                    //
                                    'amount'		=> $amount, // nếu thành công mới save số tiền vào									
                                    // mess
                                    'errorCode'		=> $txnResponseCode,
                                    'errorMessage'	=> $errorMessage,
                                    'epayStatus'	=> 1,                                    
                                    //
                                    'updated' 		=> date("Y-m-d H:i:s"),
                                    'statusDesc' 	=> "Thành công",
                                    'status' 		=> "1"
                            );
                            // update customer ID for user table
                            $aUpdate	= array("partnerTransID","transIdRes","transactionOrderInfo","transactionNumber","batchNumber","amount","errorCode","errorMessage","epayStatus","updated","statusDesc","status");		
                            $log3 			= $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog,$aUpdate); //ok
                            //
                            $code 		= 1;
                            $msgs[]             = "Giao dịch thành công.";
                                                       
                        } catch (Exception $e) {
                                //echo 'Caught exception: ',  $e->getMessage(), "\n";exit;
                                $code 		= -1;
                                $msgs[] 	= "Caught exception: .".$e->getMessage();
                        }
                    }elseif($hashValidated==1 && $txnResponseCode!=0){
                            try{ 
                                    // E3.START SAVE LOG SUCCESS
                                    $aParamCardLog=array(
                                                    'transID' 		=> $merchTxnRef,// key để biết được record sẽ updated
                                                    'partnerTransID' => $merchTxnRef,// key để biết được record sẽ updated
                                                    'transIdRes' 	=> $merchTxnRef,// key để biết được record sẽ updated
                                                    //
                                                    // payment info
                                                    'transactionOrderInfo'	=> $orderInfo,
                                                    'transactionNumber'		=> $transactionNo,
                                                    'batchNumber'			=> $batchNo,
                                                    //
                                                    'amount'		=> $amount, // nếu thành công mới save số tiền vào									
                                                    // mess
                                                    'errorCode'		=> $txnResponseCode,
                                                    'errorMessage'	=> $errorMessage,
                                                    'epayStatus'	=> $txnResponseCode,
                                                    //
                                                    'updated' 		=> date("Y-m-d H:i:s"),
                                                    'statusDesc' 	=> "Thất bại",
                                                    'status' 		=> "0"
                                            );
                                    //print_r($aParamCardLog);exit;
                                    // update customer ID for user table
                                    $aUpdate	= array("transID","partnerTransID","transIdRes","transactionOrderInfo","transactionNumber","batchNumber","amount","errorCode","errorMessage","epayStatus","updated","statusDesc","status");		
                                    $log3 			= $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog,$aUpdate); //ok
                                    //
                                    $code 		= -1;
                                    $msgs[] 	= "Giao dịch thất bại. Vui lòng thử lại hoặc liên hệ bộ phận hỗ trợ để biết thêm chi tiết.";
                            } catch (Exception $e) {
                                    //echo 'Caught exception: ',  $e->getMessage(), "\n";exit;
                                    $code 		= -1;
                                    $msgs[] 	= "Caught exception: .".$e->getMessage();
                            }		
                    }// end check respon from bank			
		}else{			
			$code 		= -1;
			$msgs[] 	= "Vui lòng liên hệ bộ phận hỗ trợ để biết thêm chi tiết.";
		} // end count mess	
		///	
		foreach ($msgs as $m){
			$msg.="$m<br/>";			
		}
		$msg	= json_encode(array("code"=>$code,"msg"=>$msg));	
		//print_r($msg);
		// *******************
		// END OF MAIN PROGRAM
		// *******************			
		$user_info = $this->session->userdata('user_info');
		if($user_info)
                    $this->smarty->assign("user_info", $user_info);
                if(isset($_SESSION['card_info']))
                    $card_info  = $_SESSION['card_info'];                
		//
                //print_r($card_info);exit;
                $this->smarty->assign('msg'		, json_decode($msg));
                $this->smarty->assign('card_info'		, $card_info);
                $this->smarty->view('template/pages_live/partner','partner');
                $this->smarty->view('template/pages_live/buycard_info','content');
                $this->smarty->display('template/frontend_live/home'); 
		/*
                $this->smarty
					->assign("card_info" , $card_info)
					->assign("msg"		, json_decode($msg))
					->display('template/buycard/home_info');
                 * 
                 */
	}
	////// THANH TOÁN MUA THẺ BỞI SMARTLINK
	function buycard_smartlink_cancel(){//echo "cancel";exit;
		//
		//include APPPATH . 'libraries/pay/smartlink/config_sm.php'; // thư viện smartlink
		// code here
		//include APPPATH . 'libraries/pay/smartlink/config_sm.php';
		//$pay_store_info_init= $data;
		//print_r($pay_store_info_init);
		redirect("");
	}
	// End Processing

	// This method uses the QSI Response code retrieved from the Digital
	// Receipt and returns an appropriate description for the QSI Response Code
	//
	// @param $responseCode String containing the QSI Response Code
	//
	// @return String containing the appropriate description
	//
	function getResponseDescription($responseCode) {	
		switch ($responseCode) {
			case "0" : $result = "Giao dịch thành công"; break;
			case "1" : $result = "Ngân hàng từ chối thanh toán: thẻ/tài khoản bị khoá"; break;
			case "2" : $result = "Lỗi số 2"; break;
			case "3" : $result = "Thẻ hết hạn"; break;
			case "4" : $result = "Quá số lần giao dịch cho phép. (Sai OTP, quá hạn mức trong ngày)"; break;
			case "5" : $result = "Không có trả lời từ ngân hàng"; break;
			case "6" : $result = "Lỗi giao tiếp với ngân hàng"; break;
			case "7" : $result = "Tài khoản không đủ tiền"; break;
			case "8" : $result = "Lỗi truyền dữ liệu"; break;
			case "9" : $result = "Kiểu giao dịch không được hỗ trợ"; break;
			case "10" : $result = "Lỗi Khác"; break;
			case "11" : $result = "Giao dịch chưa được xác thực OTP"; break;
			case "12" : $result = "Giao dịch không thành công, thẻ vượt quá hạn mức trong ngày"; break;
			case "13" : $result = "Thẻ chưa đăng ký dịch vụ giao dịch qua internet"; break;
			case "14" : $result = "Sai OTP"; break;
			case "15" : $result = "Sai mật khẩu"; break;
			case "16" : $result = "Sai tên chủ thẻ"; break;
			case "17" : $result = "Sai số thẻ"; break;
			case "18" : $result = "Sai ngày hiệu lực thẻ (sai ngày phát hành)"; break;
			case "19" : $result = "Sai ngày hiệu lực thẻ (sai ngày hết hạn)"; break;
			case "20" : $result = "OTP Timeout"; break;
			case "22" : $result = "Chưa xác thực thông tin thẻ"; break;
			case "23" : $result = "Không đủ điều kiện thanh toán (thẻ/tài khoản không hợp lệ hoặc TK không đủ
số dư)."; break;
			case "24" : $result = "Giao dịch không thành công, số tiền giao dịch vượt quá hạn mức 1 lần thanh
toán."; break;
			case "25" : $result = "Giao dịch không thành công, số tiền giao dịch vượt hạn mức thanh toán."; break;
			case "26" : $result = "Giao dịch chờ xác nhận từ Ngân hàng."; break;
			default  : $result = "Không xác định lỗi"; 
		}
		return $result;
	}
	//  -----------------------------------------------------------------------------	
	// If input is null, returns string "No Value Returned", else returns input
	function null2unknown($data) {
		if ($data == "") {
			return "No Value Returned";
		} else {
			return $data;
		}
	} 		
	//  ----------------------------------------------------------------------------
	/********************************END SMARTLINK*********************************************/	
	/**********************************START BẢO KIM*******************************************/
	////////////////////// THANH TOÁN QUA VÍ BẢO KIM //////////////////////
	function buycard_baokim($Email=NULL){
		// include thư viện
		include APPPATH . 'libraries/pay/baokim/vi/baokim/BaoKimPayment.php'; // thư viện smartlink
		include APPPATH . 'libraries/pay/baokim/vi/config_bk.php'; // file config
		//
                $_SESSION['cardReceived']='-100';// start baor kim session card
		$msgs	= array();
		$msg	= "";
		$code 	= -1;		
		$time	= time();
		if($Email){
                    $_SESSION['pay']['store_info_init']['Email'] = $Email;
                    $user_info = $this->db_user_model->getUserByEmail($Email);
                    if($user_info){
                        $uID 			= $user_info[0]->uID;
                        $username                   = $user_info[0]->username;
                        $customerID                 = $user_info[0]->customerID;
                        $email 			= $user_info[0]->email;	
                    }    
                }else{
                    // Get user info
                    $user_info = $this->session->userdata('user_info');
                    if($user_info){                    
                        $uID 			= $user_info[0]->uID;
                        $username                   = $user_info[0]->username;
                        $customerID                 = $user_info[0]->customerID;
                        $email 			= $user_info[0]->email;	                    
                    }else{
                        $code 		= -1;
                        $msgs[]             = "Thông tin tài khoản không hợp lệ.";
                    }
                } 
		////
		$pay_store_info_init	= "";
		if(isset($_SESSION['pay']['store_info_init'])){
			$pay_store_info_init = $_SESSION['pay']['store_info_init'];
		}else{
			$code 		= -1;
			$msgs[] 	= "Dữ liệu khởi tạo không hợp lệ.";
		}
		$card_info				= $this->db_user_model->getCardProductsInfo($pay_store_info_init['productID']);	
		if(!$card_info){
			$code 		= -1;
			$msgs[] 	= "Thông tin mua thẻ không hợp lệ.1.0.";
		}
		/// Thông tin khởi tạo cho Bảo Kim		
		$total_amount 	= $pay_store_info_init['cardprice'];//$_POST['total_amount'];
		$order_id 		= TRANSID_PAY_BY_BAOKIM.$pay_store_info_init['productID']."_".$pay_store_info_init['quantity']."_".DATE;
		$business 		= BUSINESS;//"trungbq@dos.com.vn";//"vnv1004@gmail.com";
		$description 	= "Thanh toán đơn hàng ".$order_id;
		$order_description = $description;
		$shipping_fee 	= SHIPPING_FREE; //Nếu tính thêm phí vận chuyển thì thiết lập tại đây
		$tax_fee 		= TAX_FREE; //Nếu tính thêm phí thuế thì thiết lập tại đây
		$url_success 	= URL_SUCCESS;
		//URL callback khi thanh toán thành công để update thông tin 
		$url_cancel 	= URL_CANCEL; 
		//Url khi click link "Tôi không muốn thanh toán đơn hàng này" trên cổng thanh toán Bảo Kim
		$url_detail 	= URL_DETAIL; 
		//Url chứa thông tin chi tiết đơn hàng		
		$baokim 		= new BaoKimPayment();
		$request_url 	= $baokim->createRequestUrl($order_id, $business, $total_amount, $shipping_fee, $tax_fee, $order_description, $url_success, $url_cancel, $url_detail);
		// SAVE LOG KHỞI TẠO
		/////////////////////////////////////	
		$log_init					= "";// khởi tạo dữ liệu			
		$log_init['ip'] 			= get_real_ip();
		$log_init['created'] 		= $time;
		$log_init['date'] 			= date("Y-m-d H:i:s");
		$log_init['transID'] 		= $order_id; // chính là order ID
		$log_init['catID'] 			= $pay_store_info_init['catID'];
		$log_init['provider'] 		= $pay_store_info_init['provider'];
		$log_init['productID'] 		= $pay_store_info_init['productID'];
		$log_init['productValue'] 	= $card_info[0]->productName;
		$log_init['quantity'] 		= $pay_store_info_init['quantity'];
		$log_init['cardprice'] 		= $pay_store_info_init['cardprice'];
		$log_init['paymethod']		= $pay_store_info_init['paymethod'];
		$log_init['typeUse']		= TRANSID_TYPE_USE_PAY;
		// E1.SAVE LOG KHỞI TẠO GIAO DỊCH TRƯỚC KHI ĐĂNG NHẬP VÀO EPAY
		$aParamCardLog=array(                                
				'uID' 			=> $uID,				
				'username'		=> $username,
				'email' 		=> $email,
				'customerID' 	=> $customerID,
				'transID' 		=> $log_init['transID'],
				// payment info
				'transactionOrderInfo'		=> $order_description,
				///
				'catID' 		=> $log_init['catID'],
				'providerID'	=> $log_init['provider'],
				'productID' 	=> $log_init['productID'],
				'productValue' 	=> $log_init['productValue'],
				'quantity' 		=> $log_init['quantity'],
				'cardprice' 	=> $log_init['cardprice'],
				'paySource' 	=> "baokim",
				'typeUse' 		=> $log_init['typeUse'],
				"date"			=> $log_init['date'],
				'created' 		=> $log_init['created'],
				'statusDesc' 	=> "Khởi tạo",
				'status' 		=> "-2",
				'ip' 			=> $log_init['ip']
			);		
		// 
		$log1 					= $this->db_billing_model->ano_logbilling_init($aParamCardLog); //ok
		//echo $request_url;exit;
		echo "<meta http-equiv='refresh' content='0;url=$request_url' />";		
		//echo $request_url;exit;
		//redirect($request_url);
		//echo "bc bk";exit;	
	}
	//
	function buycard_baokim_callback(){
		// include thư viện
		include APPPATH . 'libraries/pay/baokim/vi/baokim/BaoKimPayment.php'; // thư viện smartlink
		include APPPATH . 'libraries/pay/baokim/vi/config_bk.php'; // file config
		//	
		$msgs	= array();
		$msg	= "";
		$code 	= -1;		
		$time	= time();
		$card_info	= "";
		//Baokim Payment Notification (BPN) Sample
		//Lay thong tin tu Baokim POST sang
		$req = '';
		foreach ( $_POST as $key => $value ) {
			$value = urlencode ( stripslashes ( $value ) );
			$req .= "&$key=$value";
		}		
		//thuc hien  ghi log cac tin nhan BPN
		/*$myFile = "logs/bpn.log";
		$fh = fopen($myFile, 'a') or die("can't open file");
		$text = "\n\n".$_SERVER['REMOTE_ADDR']."-".date("j,m,Y, H:i:s a").$req."\n\n";
		fwrite($fh, $text);*/
		
		$ch = curl_init();		
		//Dia chi chay BPN test
		//curl_setopt($ch, CURLOPT_URL,'http://sandbox.baokim.vn/bpn/verify');		
		//Dia chi chay BPN that
		curl_setopt($ch, CURLOPT_URL,'https://www.baokim.vn/bpn/verify');
		curl_setopt($ch, CURLOPT_VERBOSE, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
		$result = curl_exec($ch);
		$status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
		$error = curl_error($ch);
		
		if($result != '' && strstr($result,'VERIFIED') && $status==200){
			//thuc hien update hoa don
			fwrite($fh, 		' => VERIFIED');			
			$order_id 			= $_POST['order_id'];			
			$transaction_id 	= $_POST['transaction_id'];			
			$transaction_status = $_POST['transaction_status'];			
			$total_amount		= $_POST['total_amount'];			
			$net_amount			= $_POST['net_amount'];			
			$fee_amount			= $_POST['fee_amount'];			
			$customer_name		= $_POST['customer_name'];			
			$customer_address 	= $_POST['customer_address'];	
			$customerData		= "Net_amount:".$net_amount."-"."Fee_amount:".$fee_amount."-"."Customer_name:".$customer_name."-"."Customer_address:".$customer_address;
			//kiem tra trang thai giao dich
		if ($transaction_status == 4||$transaction_status == 13){
                        // Trang thai giao dich =4 la thanh toan truc tiep = 13 la thanh toan an toan			                        
			// check session va status cua giao dich                          
                        if(isset($order_code)){
                            $this->buycard_getCardCodeCallBack($order_id, $card_info);//goi kho the simpay
                        } 				
			
			//xac nhan la da thanh toan thanh cong don hang
			// Thao tac voi co so du lieu
			// E3.START SAVE LOG SUCCESS
				$aParamCardLog=array(
						'transID'               => $order_id,// key để biết được record sẽ updated
						'partnerTransID' 	=> $transaction_id,// partner from đối tác
						'transIdRes' 		=> $transaction_id,// key để biết được record sẽ updated
						//
						'amount'		=> $total_amount, // nếu thành công mới save số tiền vào									
						//
						'cardData'		=> $customerData, 
						// mess
						'errorCode'		=> $transaction_status,
						'errorMessage'		=> $errorMessage,
						'epayStatus'		=> 1,
						//
						'updated' 		=> date("Y-m-d H:i:s"),
						'statusDesc' 		=> "Thành công",
						'status' 		=> "1"
					);
				// update customer ID for user table
				$aUpdate	= array("transID","partnerTransID","transIdRes","cardData","amount","errorCode","errorMessage","epayStatus","updated","statusDesc","status");		
				$log3 			= $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog,$aUpdate); //ok
				//
				$code 		= 1;
				$msgs[] 	= "Giao dịch thành công.";
                                
			}			
			/**
			 * Neu khong thi bo qua
			 */
		}else{
                        // E3.START SAVE LOG FAILED
                        $aParamCardLog=array(
                                        'transID'               => $order_id,// key để biết được record sẽ updated
                                        'partnerTransID' 	=> $transaction_id,// partner from đối tác
                                        'transIdRes' 		=> $transaction_id,// key để biết được record sẽ updated
                                        //
                                        //'amount'		=> $total_amount, // nếu thành công mới save số tiền vào									
                                        //
                                        'cardData'		=> $customerData, 
                                        // mess
                                        'errorCode'		=> $transaction_status,
                                        'errorMessage'		=> $errorMessage,
                                        'epayStatus'		=> 1,
                                        //
                                        'updated' 		=> date("Y-m-d H:i:s"),
                                        'statusDesc' 		=> "Thất bại",
                                        'status' 		=> "0"
                                );
                        // update customer ID for user table
                        $aUpdate	= array("transID","partnerTransID","transIdRes","cardData","errorCode","errorMessage","epayStatus","updated","statusDesc","status");		
                        $log3 			= $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog,$aUpdate); //ok
			//fwrite($fh, ' => INVALID');
			$code 		= -1;
			$msgs[] 	= "INVALID.";
		}		
		if ($error){
			//fwrite($fh, " | ERROR: $error");
			$code 		= -1;
			$msgs[] 	= " | ERROR: $error.";
		}		
		foreach ($msgs as $m){
			$msg.="$m<br/>";			
		}
		$msg	= json_encode(array("code"=>$code,"msg"=>$msg));
		/////////////////
		//echo "bk callback";exit;
		$user_info = $this->session->userdata('user_info');
		if($user_info)
                    $this->smarty->assign("user_info", $user_info);
                if(isset($_SESSION['card_info']))
                    $card_info  = $_SESSION['card_info'];
                else
                    $card_info  = "";
		//
                $this->smarty->assign('msg'		, json_decode($msg));
                $this->smarty->assign('card_info'		, $card_info);
                $this->smarty->view('template/pages_live/partner','partner');
                $this->smarty->view('template/pages_live/buycard_info','content');
                $this->smarty->display('template/frontend_live/home');   
              /*  
		$this->smarty
					->assign("card_info" , $card_info)
					->assign("msg"		, json_decode($msg))
					->display('template/buycard/home_info');
               * 
               */
	}
	//
	function buycard_baokim_cancel(){
		echo "bk cancel";exit;
	}
	//
	function buycard_baokim_detail(){
		echo "bk detail";exit;
	}	
	/**********************************END BẢO KIM*********************************************/
        /**********************************START NGAN LUONG*********************************************/
        function buycard_nganluong($Email=NULL){
            // include thư viện            
            require_once APPPATH . 'libraries/pay/nganluong/vi/config_nl.php'; // file config
            
            require_once APPPATH . 'libraries/pay/nganluong/vi/include/nganluong.microcheckout.class.php';                            
            //
            $_SESSION['cardReceived'] = -100; // start session
            //	
            $msgs	= array();
            $msg	= "";
            $code 	= -1;		
            $time	= time();
            $card_info	= "";
            // Get user info
            $user_info = $this->session->userdata('user_info');
            if($Email){
                    $_SESSION['pay']['store_info_init']['Email'] = $Email;
                    $user_info = $this->db_user_model->getUserByEmail($Email);
                    if($user_info){
                        $uID 			= $user_info[0]->uID;
                        $username                   = $user_info[0]->username;
                        $customerID                 = $user_info[0]->customerID;
                        $email 			= $user_info[0]->email;	
                    }    
                }else{
                    // Get user info
                    $user_info = $this->session->userdata('user_info');
                    if($user_info){                    
                        $uID 			= $user_info[0]->uID;
                        $username                   = $user_info[0]->username;
                        $customerID                 = $user_info[0]->customerID;
                        $email 			= $user_info[0]->email;	                    
                    }else{
                        $code 		= -1;
                        $msgs[]             = "Thông tin tài khoản không hợp lệ.";
                    }
                } 
            ////
            $pay_store_info_init	= "";
            if(isset($_SESSION['pay']['store_info_init'])){
                    $pay_store_info_init = $_SESSION['pay']['store_info_init'];
            }else{
                    $code 		= -1;
                    $msgs[] 	= "Dữ liệu khởi tạo không hợp lệ.";
            }
            $card_info				= $this->db_user_model->getCardProductsInfo($pay_store_info_init['productID']);	
            if(!$card_info){
                    $code 		= -1;
                    $msgs[] 	= "Thông tin mua thẻ không hợp lệ.1.0.";
            }
            ///                       
            $name       = "Mua mã thẻ ".$card_info[0]->productName;
            $quanty     = $pay_store_info_init['quantity'];
            $price      = "";//
            //$amount     = $pay_store_info_init['cardprice']; //$amount_vi so tien can thanh toan
            $amount     = 2000;
            //$order_code = TRANSID_MUATHE."_".date('His_dmY');//'Order-'.date('His-dmY');
            $order_code =  TRANSID_PAY_BY_NGANLUONG.$pay_store_info_init['productID']."_".$pay_store_info_init['quantity']."_".DATE;
            $items      = array();
            $items[]    = array(
                            'item_name'         => $name,
                            'item_quanty'	=> $quanty,
                            'item_amount'	=> $price
            );            
            //$receiver = '';
            $inputs = array(
                    'receiver'		=> RECEIVER,
                    'order_code'	=> $order_code,
                    'amount'		=> $amount,
                    'currency_code'	=> 'vnd',
                    'tax_amount'	=> '0',
                    'discount_amount'	=> '0',
                    'fee_shipping'	=> '0',
                    'request_confirm_shipping'	=> '0',
                    'no_shipping'	=> '1',
                    'return_url'	=> RETURN_URL,
                    'cancel_url'	=> CANCEL_URL,
                    'language'		=> 'vn',
                    'items'		=> $items
            );
            //print_r($inputs);
            $link_checkout  = '';
            $obj            = new NL_MicroCheckout(MERCHANT_ID, MERCHANT_PASS, URL_WS);
            $result         = $obj->setExpressCheckoutPayment($inputs);
            if($result != false) {
                if ($result['result_code'] == '00') {
                    $link_checkout = $result['link_checkout'];
                } else {
                    //die('Mã lỗi '.$result['result_code'].' ('.$result['result_description'].') ');
                    $code 	= -1;
                    $msgs[]     = 'Mã lỗi '.$result['result_code'].' ('.$result['result_description'].') ';
                }
            }else{
                //die('Lỗi kết nối tới cổng thanh toán Ngân Lượng');
                $code       = -1;
                $msgs[]     = 'Lỗi kết nối tới cổng thanh toán Ngân Lượng';
            }
            
            if(!count($msgs)) {
                // SAVE LOG KHỞI TẠO
                /////////////////////////////////////	
                $log_init			= "";// khởi tạo dữ liệu			
                $log_init['ip'] 		= get_real_ip();
                $log_init['created'] 		= $time;
                $log_init['date'] 		= date("Y-m-d H:i:s");
                $log_init['transID'] 		= $order_code; // chính là order ID            
                $log_init['catID'] 		= $pay_store_info_init['catID'];
		$log_init['provider'] 		= $pay_store_info_init['provider'];
		$log_init['productID'] 		= $pay_store_info_init['productID'];
		$log_init['productValue'] 	= $card_info[0]->productName;
		$log_init['quantity'] 		= $pay_store_info_init['quantity'];
                $log_init['cardprice']		= $amount;
                $log_init['typeUse']		= TRANSID_TYPE_USE_VI;            
                // E1.SAVE LOG KHỞI TẠO GIAO DỊCH TRƯỚC KHI ĐĂNG NHẬP VÀO EPAY
                $aParamCardLog=array(                                
                                'uID' 		=> $uID,				
                                'username'	=> $username,
                                'email' 	=> $email,
                                'customerID' 	=> $customerID,
                                'transID' 	=> $log_init['transID'],
                                // payment info
                                'transactionOrderInfo'=> "Thanh toán đơn hàng ".$log_init['productValue'],
                                ///  
                                'catID' 	=> $log_init['catID'],
				'providerID'	=> $log_init['provider'],
				'productID' 	=> $log_init['productID'],
				'productValue' 	=> $log_init['productValue'],
				'quantity' 	=> $log_init['quantity'],    
                                'cardprice' 	=> $log_init['cardprice'],
                                'paySource' 	=> "nganluong",
                                'typeUse' 	=> $log_init['typeUse'],
                                "date"		=> $log_init['date'],
                                'created' 	=> $log_init['created'],
                                'statusDesc' 	=> "Khởi tạo",
                                'status' 	=> "-2",
                                'ip' 		=> $log_init['ip']
                        );		
                // 
                $log1 				= $this->db_billing_model->ano_logbilling_init($aParamCardLog); //ok
                //echo $link_checkout;exit;
                redirect($link_checkout);
            }else{                                
                //$code 		= -1;
                //$msgs[] 	= "Hệ thống đang bận hoặc bảo trì, vui lòng quay lại sau.";
                foreach ($msgs as $m){
                        $msg.="$m<br/>";			
                }
                $msg	= json_encode(array("code"=>$code,"msg"=>$msg));
                // end get session from epay
                $user_info = $this->session->userdata('user_info');
                if($user_info)
                    $this->smarty->assign("user_info", $user_info);
                //
                $this->smarty
                            ->assign("msg", json_decode($msg))
                            ->display('template/wallet/home');
            }     
	}
	//
	function buycard_nganluong_callback(){            
            // include thu vien
            require_once APPPATH . 'libraries/pay/nganluong/vi/config_nl.php'; // file config
            //require_once APPPATH . 'libraries/pay/nganluong/vi/include/lib/nusoap.php';
            require_once APPPATH . 'libraries/pay/nganluong/vi/include/nganluong.microcheckout.class.php';
            //	
            $msgs	= array();
            $msg	= "";
            $code 	= -1;		
            $time	= time();
            $card_info	= "";
            $user_info  = "";
            //khai bao
            $obj        = new NL_MicroCheckout(MERCHANT_ID, MERCHANT_PASS, URL_WS);

            if ($obj->checkReturnUrlAuto()) {
                $inputs = array(
                            'token'		=> $obj->getTokenCode(),//$token_code,
                );
                $result     = $obj->getExpressCheckout($inputs);
                if ($result != false) {
                    if ($result['result_code'] != '00') {
                        //die('Mã lỗi '.$result['result_code'].' ('.$result['result_description'].') ');
                        $code 	= -1;
                        $msgs[] = 'Mã lỗi '.$result['result_code'].' ('.$result['result_description'].') ';
                    }
                } else {
                    //die('Lỗi kết nối tới cổng thanh toán Ngân Lượng');
                    $code 	= -1;
                    $msgs[] 	= 'Lỗi kết nối tới cổng thanh toán Ngân Lượng';
                }
            } else {
                //die('Tham số truyền không đúng');
                $code           = -1;
                $msgs[] 	= 'Tham số truyền không đúng';
            }
            ///
            if(!count($msgs)) {
            //print_r($result);exit;
                // Mai check tiep cho nay // sao ma duy nhat thoi.
                if (isset($result) && !empty($result)) {
                    if ($result['result_code'] == '00') { // giao dich thanh cong                        
                        
                        // GET VALUE                    
                        $order_code      = $this->null2unknown(@$_GET["order_code"]);// phuong thuc get
                        $transaction_id  = $this->null2unknown($result["transaction_id"]);
                        $errorCode       = $this->null2unknown($result['transaction_status']);                    
                        $methodPayment   = $this->null2unknown($result['method_payment_name']);
                        $amount          = $this->null2unknown($result['amount']);
                        $orderInfo       = $this->null2unknown(($result['transaction_type'] == 1 ? 'Thanh toán ngay' : 'Thanh toán tạm giữ'));
                        // info about user pay
                        $receiverName     = $this->null2unknown($result['payer_name']);
                        $receiverEmail    = $this->null2unknown($result['payer_email']);
                        $receiverPhone    = $this->null2unknown($result['payer_mobile']);
                        $cardAmount       = $this->null2unknown($result['card_amount']);
                        $customerData     = $receiverName."-".$receiverEmail."-".$receiverPhone."-".$cardAmount;
                        // code here                        
                        // check chỉ get 1 lần duy nhất ứng với mỗi giao dịch.
                        // check session va status cua giao dich                          
                        if(isset($order_code)){
                            $this->buycard_getCardCodeCallBack($order_code, $card_info);//goi kho the simpay
                        }                        
                        // E3.START SAVE LOG SUCCESS
                        $aParamCardLog=array(
                            'transID'               => $order_code,// key để biết được record sẽ updated
                            'partnerTransID' 	=> $transaction_id,// partner from đối tác
                            'transIdRes'            => $transaction_id,// key để biết được record sẽ updated
                            //
                            'amount'		=> $amount, // nếu thành công mới save số tiền vào									
                            //
                            'cardData'		=> $customerData, 
                            'phoneReceiver'		=> $receiverPhone, 
                            // mess
                            'errorCode'		=> $errorCode,
                            'errorMessage'          => $orderInfo,
                            'epayStatus'            => 1,
                            //
                            'updated' 		=> date("Y-m-d H:i:s"),
                            'statusDesc'            => "Thành công",
                            'status' 		=> "1"
                        );
                        // update customer ID for user table
                        $aUpdate            = array("transID","partnerTransID","transIdRes","cardData","amount","errorCode","errorMessage","updated","statusDesc","status");		
                        $log3 		= $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog,$aUpdate); //ok
                        //
                        $code 		= 1;
                        $msgs[]             = "Giao dịch thành công.";                        
                        
                        //print_r($result);exit;
                    }else{
                        //echo $result['result_description'];
                        // E3.START SAVE LOG FAILED
                        $aParamCardLog=array(
                            'transID' 		=> $result["transaction_id"],// key để biết được record sẽ updated
                            'partnerTransID'        => $result["transaction_id"],// key để biết được record sẽ updated
                            'transIdRes'            => $result["transaction_id"],// key để biết được record sẽ updated                                                                          
                            // mess
                            'errorCode'		=> $result['result_code'],
                            'errorMessage'          => $result['result_description'],
                            //
                            'updated' 		=> date("Y-m-d H:i:s"),
                            'statusDesc'            => "Thất bại",
                            'status' 		=> "0"
                        );
                        //print_r($aParamCardLog);exit;
                        // update customer ID for user table
                        $aUpdate        = array("transID","partnerTransID","transIdRes","errorCode","errorMessage","updated","statusDesc","status");		
                        $log3           = $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog,$aUpdate); //ok
                        $code           = -1;
                        $msgs[]         = 'Giao dịch thất bại. Error: '.$result['result_description'];
                        //print_r($result);exit;
                    }
                }
            }
            foreach ($msgs as $m){
                    $msg.="$m<br/>";			
            }
            $msg	= json_encode(array("code"=>$code,"msg"=>$msg));
            // end get session from epay            
            $user_info      = $this->session->userdata('user_info');
            if($user_info)
                $this->smarty->assign("user_info", $user_info);
            if(isset($_SESSION['card_info']))
                $card_info  = $_SESSION['card_info'];
            //print_r($_SESSION);exit;
            //
            $this->smarty->assign('msg'		, json_decode($msg));
            $this->smarty->assign('card_info'		, $card_info);
            $this->smarty->view('template/pages_live/partner','partner');
            $this->smarty->view('template/pages_live/buycard_info','content');
            $this->smarty->display('template/frontend_live/home'); 
            /*
            $this->smarty                    
                    ->assign("msg"		, json_decode($msg))
                    ->assign("card_info"        , $card_info)
                    ->display('template/buycard/home_info');
             * 
             */
        }
        function buycard_nganluong_cancel(){
            redirect("wallet");exit;
	}
	//
	function buycard_nganluong_detail(){
            //redirect("wallet");exit;
            echo "bk detail";exit;
	}
        /**********************************END NGAN LUONG*********************************************/
	/**********************************START GAMEBANK*******************************************/	
	/// start giao dịch
	function buycard_gamebank(){
		// include thư viện
		include APPPATH . 'libraries/pay/gamebank/class_gb.php'; // thư viện smartlink
		include APPPATH . 'libraries/pay/gamebank/config_gb.php'; // file config		
		$class 				= new MyClassGameBank();// khởi tạo class
		//	
		$msgs	= array();
		$msg	= "";
		$code 	= -1;		
		$time	= time();
		$card_info	= "";				
		////		
		$PartnerName 		= GB_PARTNER_NAME;
		$PartnerUsername 	= GB_PARTNER_USERNAME;
		$UserKey 			= $class->userkey(GB_USER_KEY);
		$Amount 			= rand(5000,10000);
		$ReferenceID 		= rand(10000,1000000);
		$BackLink 			= GB_CALL_BACK_CONFIRM;
		$Description 		= 'alot of word herealot of word herealot of word here alot of word here';		
		$KeyData 			= $class->keydata($PartnerUsername,$UserKey,$Amount,$ReferenceID,$BackLink);		
		$FormAction 		= GB_URL_TRANS_CREATE;
		////
		$data				= array(
								'PartnerName' 		=> $PartnerName,
								'UserName' 			=> $PartnerUsername,
								'UserKey'			=> $UserKey,
								'Amount' 			=> $Amount,
								'ReferenceID' 		=> $ReferenceID,
								'BackLinkCreate' 	=> $BackLink,
								'Description' 		=> $Description,
								'KeyData' 			=> $KeyData
								);
		///
                //echo $request_url;exit;
                $request_url=GB_URL_TRANS_CREATE.'?PartnerName='.$PartnerName.'&UserName='.$PartnerUsername.'&UserKey='.$UserKey.'&Amount='.$Amount.'&ReferenceID='.$ReferenceID.'&BackLinkCreate='.$BackLink.'&Description='.$Description.'&KeyData='.$KeyData;
		echo "<meta http-equiv='refresh' content='0;url=$request_url' />";
		print_r($data);//exit;
		$tmp=$this->curlTest($FormAction,$data);
		print_r($tmp);
	}
	/// Callback giao dịch
	function buycard_gamebank_callback(){
            // check cacs thoong so trar ve / transid/time/amount/
            echo '{"errorCode":"1000","errorMessage":"Giao dịch  thành  công"}';
            //echo "bk conffirm";exit;
	}
	/// hoàn thành giao dịch
	function buycard_gamebank_finish(){
		echo "bk finish";exit;
	}
	/// hiển thị giao dịch
	function buycard_gamebank_show(){
		echo "bk show";exit;
	}
	/// huỷ giao dịch
	function buycard_gamebank_cancel(){
		echo "bk cancel";exit;
	}
	
	/**********************************END GAMEBANK*********************************************/
        /**********************************START SMS*********************************************/
        //// MO
        function buycard_sms(){            
            // params test MO
            $moid               = date('His');
            $moseq              = date('YHis');
            $src                = "84978015984";//841229073229
            $dest               = "8188";
            $cmdcode            = "MT mobi 10";
            $msgbody            = "MT mobi 10 +84978015984";
            $opid               = "ad8188";
            $username           = 'vdc_sms';
            $password           = 'ZC%b9T8EVG#vuHjTh#uY';
            // save log
            try {
                //$wsdl 		= base_url()."buycard/buycard_sms_service?wsdl"; // dev ci
                //$wsdl 		= "http://muathe.rieng.vn/6689/dev/vdc/sms/service.php?wsdl"; // live
                $wsdl 		= "http://localhost/gamebank/muathe.vn/dev/vdc/sms/service.php?wsdl"; // dev                
                $url_status 	= check_url($wsdl);//
                //print_r($url_status);exit;
                if($url_status['errno'] == 0 &&  $url_status['http_code'] == 200){						
                    $client = new SoapClient($wsdl,array('encoding'=>'utf-8','trace' => 1, 'exceptions' => 0,'location'=>$wsdl,'uri'=>'http://ngaokiem.net/')); // lib
                    $paramLogin = array(
                                    "moid" 		=> $moid,
                                    "moseq" 		=> $moseq,
                                    "src"               => $src,
                                    "dest"              => $dest,
                                    "cmdcode"           => $cmdcode,
                                    "msgbody"           => $msgbody,
                                    "opid"              => $opid,
                                    "username"          => $username,
                                    "password"          => $password
                                    );

                    //print_r($paramLogin);//exit;
                    //$checkResult 		= $client->ReceiveMO($paramLogin);
                    $checkResult 		= $client->ReceiveMO($moid,$moseq,$src,$dest,$cmdcode,$msgbody,$opid,$username,$password);
                    echo '<h2>Request</h2><pre>' . htmlspecialchars($client->__getLastRequest(), ENT_QUOTES) . '</pre>';
                    echo '<h2>Response</h2><pre>' . htmlspecialchars($client->__getLastResponse(), ENT_QUOTES) . '</pre>';
                    print_r($checkResult);exit;                        
                } else {
                    $msg[] = "Hệ thống đang bận, xin vui lòng thử lại.3.".$url_status['errno'].".".$url_status['http_code']; //"Hệ thống đang bận hoặc đang bảo trì.";
                }

            } catch (Exception $e) {
                echo 'Caught exception: ',  $e->getMessage(), "\n";
            }
                       
        }
        /// MT
        function buycard_sms_xx(){            
           $this->smarty                    
                    ->display('template/buycard/home_sms');
        }
        /// MT
        function buycard_sms_service(){
            /// VDC define
            define ('VDC_WSDL_MT', 'http://www.mymobile.com.vn/SMSAPIWS/SMSAgentWS.asmx?wsdl');
            define ('VDC_CPID', '414');
            define ('VDC_USERNAME', 'rng');
            define ('VDC_PASSWORD', 'l12O4jeEUS');
            ////
            //ini_set('soap.wsdl_cache_enabled', '0');
            $server                     = new soap_server();
            $server->soap_defencoding   = 'UTF-8';
            //Khai bao thong tin cho web service
            $server->configureWSDL('ReceiveMO','uri:ReceiveMO');
            
            $namespace      = base_url()."buycard/buycard_sms_service";
            $soapAction     = base_url()."buycard/buycard_sms_service/ReceiveMO";
            $style          = 'rpc';
            $use            = 'encoded';
            $description    = 'A web service to sms';
            $server->wsdl->schemaTargetNamespace = $namespace;    
            $server->register(
                    'ReceiveMO',//khai bao ten ham
                    array(  'moid'=>'xsd:string',
                            'moseq'=>'xsd:string',
                            'src'=>'xsd:string',
                            'dest'=>'xsd:string',
                            'cmdcode'=>'xsd:string',
                            'msgbody'=>'xsd:string',
                            'opid'=>'xsd:string',
                            'username'=>'xsd:string',
                            'password'=>'xsd:string',
                            ),//input
                    array('ReceiveMOResult'=>'xsd:int'),//output
                            $namespace, 
                            $soapAction, 
                            $style, 
                            $use, 
                            $description
            );
            //$this->ReceiveMO($moid, $moseq, $src, $dest, $cmdcode, $msgbody, $opid, $username, $password);
            //Hien thi thong tin
            $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';            
            $server->service($HTTP_RAW_POST_DATA);
        }
        /*
        * ReceiveMO
        */
        function ReceiveMO($moid, $moseq, $src, $dest, $cmdcode, $msgbody, $opid, $username, $password){                    
            return new soapval('return','xsd:int',202);exit;
            //username va pass tu dinh nghia
            if($username != "vdc_sms" || $password != 'ZC%b9T8EVG#vuHjTh#uY')
            {                 
                // tra ve loi 404 khi sai user hoac pass
                return new soapval('return','xsd:int',404);
            }        
            //$requesttime    = gmdate("Y-m-d H:i:s", time()+(7*3600));
            // Luu tin vdc gui sang vao database mysql            
            //return new soapval('return','xsd:int',4042);
            //$query          = "INSERT INTO ano_sms_mo(MO_ID, MOSEQ, UserID, ServiceID, CommandCode, MsgBody, OpID, Requesttime) VALUES ('$moid','$moseq','$src','$dest','$cmdcode','$msgbody','$opid','$requesttime')";
            //mysql_query($query);
            // SAVE LOG KHỞI TẠO MO
            /////////////////////////////////////	
            $log_init				= "";// khởi tạo dữ liệu			            
            $log_init['moID']                   = $moid;            
            $log_init['moSeq']                  = $moseq;
            $log_init['userID'] 		= $src;
            $log_init['serviceID']              = $dest;
            $log_init['cmdCode'] 		= $cmdcode;
            $log_init['msgBody']                = $msgbody;
            $log_init['opID']                   = $opid;            
            $log_init['ip'] 			= get_real_ip();
            $log_init['reqTime'] 		= date("Y-m-d H:i:s");
            // E1.SAVE LOG KHỞI TẠO GIAO DỊCH TRƯỚC KHI ĐĂNG NHẬP VÀO EPAY
            $aParamCardLog=array(
                            'moID' 		=> $log_init['moID'],
                            'moSeq'             => $log_init['moSeq'],
                            'userID'            => $log_init['userID'],
                            'serviceID' 	=> $log_init['serviceID'],
                            'cmdCode' 		=> $log_init['cmdCode'],
                            'msgBody'           => $log_init['msgBody'],
                            'opID'              => $log_init['opID'],
                            'reqTime' 		=> $log_init['reqTime'],                            
                            'ip' 		=> $log_init['ip']
                    );		
            // 
            $log1 				= $this->db_billing_model->insertSmsReceiveMO($aParamCardLog); //ok
            /*
            Xu ly kich ban		
            */               
            //return new soapval('return','xsd:string',$moid);
            $send_resutlt   = SendMT($moid, $moseq, $src, $dest, $cmdcode, $opid);
            //return new soapval('return','xsd:string',$send_resutlt);
            // check neu send ok thi return 202 else return bug
            return new soapval('return','xsd:int',$send_resutlt);
        }
        /*
        * SendMT
        */
        function SendMT($moid, $moseq, $src, $dest, $cmdcode, $opid){
            /*
            neu tin tra ve la link tai game, hinh nen thi $msgtype='Bookmark'
            link khong su dung http://
            vi du: $msgbody = "www.abc.com/game.jar";
            */
            ///// B1. CHECK KHO THE, GET MA THE, GUI THONG TIN THE CHO TELCO.
            $msgbody    = "Chuc mung ban nhan duoc ma the Viettel 100.000 -Code: BVNP-9999-1000488 - So seri: BVN1000488";// xu ly cho nay // ma the tra ve cho kh
            $reqtime    = gmdate("YmdHis", time()+(7*3600));            
            /// GET MOID FROM SMS_MO
            $resultset	= $this->db_billing_model->getMoIDFromSmsMO($moid);            
            $mtseq      = $resultset[0]->moID;// ung voi MOID //

            //$mtseq      = $tmp."_".date('His');
            //$mtseq      = date('His');
            // Khai bao MT:
            $msgtype    = 'Text';
            $msgtitle   = 'Title';
            $mttotalseg = '1';
            $mtseqref   = '1';
            $cpid       = VDC_CPID;
            $procresult = '1';
            $username   = VDC_USERNAME;
            $password   = VDC_PASSWORD;

            //Khai bao client 
            $WSDL       = VDC_WSDL_MT;
            $client     = new nusoap_client($WSDL, true);
            $client->soap_defencoding = 'UTF-8';
            $status     = $client->call('SendMT', 
                        array(
                                'mtseq'     =>$mtseq,
                                'moid'      =>$moid,
                                'moseq'     =>$moseq,
                                'src'       =>$dest,
                                'dest'      =>$src,
                                'cmdcode'   =>$cmdcode,
                                'msgbody'   =>$msgbody,
                                'msgtype'   =>$msgtype,
                                'msgtitle'  =>$msgtitle,
                                'mttotalseg'=>$mttotalseg,
                                'mtseqref'  =>$mtseqref,
                                'cpid'      =>$cpid,
                                'reqtime'   =>$reqtime,
                                'procresult'=>$procresult,
                                'opid'      =>$opid,
                                'username'  =>$username,
                                'password'  =>$password
                            )
                        );

            $tthai      = $status['SendMTResult'];
            $requesttime = gmdate("Y-m-d H:i:s", time()+(7*3600));
            // Luu tin gui di vao bang ano_sms_mt
            $query      = "INSERT INTO ano_sms_mt(mtseq, moid, moseq, src, dest, cmdcode, msgbody, msgtype, msgtitle, mttotalseg, mtseqref, cpid, reqtime, procresult, opid, Status) VALUES ('$mtseq','$moid','$moseq','$dest','$src','$cmdcode','$msgbody','$msgtype','$msgtitle','$mttotalseg','$mtseqref','$cpid','$requesttime','$procresult','$opid','$tthai')";
            mysql_query($query);
            ////
            // SAVE LOG KHỞI TẠO SMS MT
            /////////////////////////////////////	
            $log_init                            = "";// khởi tạo dữ liệu			            
            $log_init['mtSeq']                   = $mtseq;            
            $log_init['moID']                    = $moid;
            $log_init['moSeq']              = $moseq;
            $log_init['src']                = $dest; // hoan doi vi tri
            $log_init['dest']               = $src;
            $log_init['cmdCode']                    = $cmdcode;
            $log_init['msgBody']                    = $msgbody;            
            $log_init['msgType']                    = $msgtype;
            $log_init['msgTitle']                   = $msgtitle;            
            $log_init['mtTotalSeg']                 = $mttotalseg;
            $log_init['mtSeqRef']                   = $mtseqref;            
            $log_init['cpID']                       = $cpid;
            $log_init['reqTime']                    = $requesttime;            
            $log_init['procResult']                 = $procresult;
            $log_init['opID']                       = $opid;            
            $log_init['status']                     = $tthai;            
            $log_init['ip']                         = get_real_ip();
            $log_init['reqTime']                    = date("Y-m-d H:i:s");
            // E1.SAVE LOG KHỞI TẠO GIAO DỊCH TRƯỚC KHI ĐĂNG NHẬP VÀO EPAY
            $aParamCardLog=array(
                            'mtSeq' 		=> $log_init['mtSeq'],
                            'moID'              => $log_init['moID'],
                            'moSeq'             => $log_init['moSeq'],
                            'src'               => $log_init['src'],
                            'dest' 		=> $log_init['dest'],
                            'cmdCode'           => $log_init['cmdCode'],
                            'msgBody'              => $log_init['msgBody'],
                            'msgType'              => $log_init['msgType'],
                            'msgTitle'              => $log_init['msgTitle'],
                            'mtTotalSeg'              => $log_init['mtTotalSeg'],
                            'mtSeqRef'              => $log_init['mtSeqRef'],
                            'cpID'                  => $log_init['cpID'],
                            'reqTime'               => $log_init['reqTime'],
                            'procResult'              => $log_init['procResult'],
                            'opID'                  => $log_init['opID'],
                            'status'                => $log_init['status'],
                            'reqTime'               => $log_init['reqTime'],                            
                            'ip'                    => $log_init['ip']
                    );		
            // 
            $log1 				= $this->db_billing_model->insertSmsReceiveMT($aParamCardLog); //ok
            ///// B2. UPDATE TRANG THAI KHI GOI WS LEN TELCO
            // gui di thanhf cong
            if($status['SendMTResult'] == 202){                
                // E3.START SAVE LOG SUCCESS
                $aParamCardLog=array(
                        'mtSeq' 		=> $mtseq,// key để biết được record sẽ updated
                        'moID'                  => $moid,// key để biết được record sẽ updated
                        'moSeq' 		=> $moseq,// key để biết được record sẽ updated
                        //                       
                        'status' 		=> "202"
                );
                // update customer ID for user table
                $aUpdate	= array("mtSeq","moID","moSeq","status");		
                $log3 			= $this->db_billing_model->insert_onduplicate_SmsSendMT_update($aParamCardLog,$aUpdate); //ok
                // GET MA THE CHO USE
            }  else {
                // cap nhat trang thai failed
                 // E3.START SAVE LOG SUCCESS
                $aParamCardLog=array(
                        'mtSeq' 		=> $mtseq,// key để biết được record sẽ updated
                        'moID'                  => $moid,// key để biết được record sẽ updated
                        'moSeq' 		=> $moseq,// key để biết được record sẽ updated
                        //                       
                        'status' 		=> $status['SendMTResult'] // ma loi tra ve
                );
                // update customer ID for user table
                $aUpdate	= array("mtSeq","moID","moSeq","status");		
                $log3 		= $this->db_billing_model->insert_onduplicate_SmsSendMT_update($aParamCardLog,$aUpdate); //ok
            }            
            ///    
            return $status['SendMTResult']; // 202 or ma loi tra ve
        }
        /**********************************END SMS*********************************************/
        /**********************************START KHO THE EPAY***************************************/
        // GET KHO THE EPAY CHO USER BINH THUONG
        function getCardFromEpayStore($data,$log_init,$card_info, &$msgs,$flag=FALSE){
            // CHECK FLAG // GET CARD FROM VI OR FROM PHUONG THUC THANH TOAN
            // IF VI: TRU TIEN USER ELSE KO CAN (IF $FLAG=1: VI, ELSE CAC PTTT)
            // money_use_vi: PHAN BIET SU DUNG VI USER HAY DOANH NGHIEP (1: VI; 2: DOANH NGHIEP)
            //print_r($log_init);exit;
            //// GỌI THƯ VIỆN EPAY (GET MA THE TU KHO THE EPAY)///////////////            
            require_once(APPPATH.'libraries/pay/epay/ItopupClient.php');
            $itopupClient 		= new ItopupClient();
            // 1. Ðăng nhập hệ thống
            $result 			= $itopupClient->signIn();		
            ////////////////////////////////
            // CHECK PRODUCT DETAIL STORE STATUS
            $cardStoreStatus		= $this->CheckProductsDetail($itopupClient,$data['productID'],$data['quantity']);
            // Kết quả sau khi đăng nhập.
            if($itopupClient->errorCode==0)
            {
                try
                {
                        $errorCode			= $itopupClient->errorCode;// Ma 0: thanh cong
                        $errorMessage		= $itopupClient->errorMessage;
                        $errortoken			= $itopupClient->token;// Ma cua phien lam viec
                        $requestID 			= $itopupClient->generateRandomRequestID();					
                        // E2.START SAVE LOG KHỞI TẠO GIAO DỊCH SAU KHI LOGIN VÀO EPAY SYSTEM
                        $aParamCardLog=array(
                                        'requestID' 	=> $requestID,
                                        'transID' 		=> $log_init['transID'],// key để biết được record sẽ updated
                                        'updated' 		=> date("Y-m-d H:i:s"),
                                        // card store info
                                        'errorCode' 	=> $cardStoreStatus['errorStoreCode'],
                                        'errorMessage' 	=> $cardStoreStatus['errorStoreMessage'],
                                        //
                                        'cardStore' 	=> "Epay",
                                        //
                                        'statusDesc' 	=> "Chưa hoàn thành",
                                        'status' 		=> "-1"
                                );
                        // update customer ID for user table
                        $aUpdate		= array("requestID","updated","errorCode","errorMessage","statusDesc","status");
                        $log2 			= $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog,$aUpdate); //ok
                        // E2.END SAVE LOG KHỞI TẠO GIAO DỊCH SAU KHI LOGIN VÀO EPAY SYSTEM
                        // check flag
                        if($flag){                                                                
                            // 1.0 TRỪ COIN TẠM USER // chi khi su dung vi                                                                    
                            if($log_init['money_use_vi']=="1"){ // vi ca nhan
                                $logM1 		= $this->db_user_model->insert_onduplicate_update_User_Normal_Temp($log_init['coin'],$log_init['cardprice'],$log_init['uID']); //ok
                            }elseif($log_init['money_use_vi']=="2"){ // vi doanh nghiep    
                                $logM1 		= $this->db_user_model->insert_onduplicate_update_User_Normal_Temp($log_init['coin'],$log_init['cardprice'],$log_init['uIDDN']); //ok
                                // tiep tuc tru tam trong bang function list
                                // code here
                            }
                        }    
                        //////////////////////// GỌI HÀM LẤY MÃ THẺ //////////////////////
                        $result		= $this->downloadSoftpin($itopupClient,$data['productID'],$data['quantity'],$requestID);
                        // 1. Gửi kết quả về từ Epay
                        // Epay trans ID info success

                        if($result[1]['epayTransID']>0 && $result[1]['epayStatus']>0){ // có giao dịch và giao dịch hợp lệ
                                // check flag
                                if($flag){ 
                                    if($log_init['money_use_vi']=="1"){ // vi ca nhan
                                        $logM2 		= $this->db_user_model->insert_onduplicate_update_User_Normal_True($log_init['uID']); //ok
                                    }elseif($log_init['money_use_vi']=="2"){ // vi doanh nghiep    
                                        $logM2 		= $this->db_user_model->insert_onduplicate_update_User_Normal_True($log_init['uIDDN']); //ok
                                        // tiep tuc tru that trong bang function list
                                        // code here
                                    }
                                    // update session coin cho user
                                }    
                                /////
                                $i=0;
                                $cardData_array["x"]			= "";
                                $cardData_array["xserial"]		= "";
                                $cardData_array["xcode"]		= "";
                                $cardData_array["Mcontent"]		= "";
                                $total							= count($result);
                                // n mã thẻ được trả về.
                                foreach ($result as $product)
                                {
                                    ++$i;
                                    // notice info							
                                    $purchase_res[$i]['epayTransID']		= $product["epayTransID"];
                                    $purchase_res[$i]['epayStatus']			= $product["epayStatus"];
                                    $purchase_res[$i]['errorCode']			= $product["errorCode"];
                                    $purchase_res[$i]['errorMessage']		= $product["errorMessage"];
                                    $purchase_res[$i]['requestID']			= $product["requestID"];
                                    // product info
                                    $purchase_res[$i]['categoryName']		= $product['categoryName'];
                                    $purchase_res[$i]['productID']			= $product['productID'];
                                    if($card_info)
                                    {
                                            $purchase_res[$i]['productValue']	= $card_info[0]->productName;//$product['productValue'];
                                            $purchase_res[$i]['providerID']		= $card_info[0]->providerID;//$product['productID'];                                                
                                    }
                                    $purchase_res[$i]['serviceProviderName']        = $product['serviceProviderName'];
                                    // user info                                        
                                    $purchase_res[$i]['customerID']                 = $log_init['customerID'];
                                    $purchase_res[$i]['email']                      = $log_init['email'];                                        
                                    // card info
                                    $purchase_res[$i]['softpinPinCode']		= $product['softpinPinCode'];
                                    $purchase_res[$i]['softpinSerial']		= $product['softpinSerial'];
                                    $purchase_res[$i]['expiryDate']			= $product['expiryDate'];
                                    $purchase_res[$i]['merchantBalance']		= $product["merchantBalance"];	
                                    if($i<$total)
                                    {
                                            $cardData_array["xserial"]		.= $product['softpinSerial']."@";
                                            $cardData_array["xcode"]		.= $product['softpinPinCode']."@";
                                            $cardData_array["x"]                    .= $product['softpinSerial']."@".$product['softpinPinCode'].";";
                                    }else{
                                            $cardData_array["xserial"]		.= $product['softpinSerial'];
                                            $cardData_array["xcode"]		.= $product['softpinPinCode'];
                                            $cardData_array["x"] 			.= $product['softpinSerial']."@".$product['softpinPinCode'];	
                                    }
                                    // E3.START SAVE LOG SUCCESS
                                    $aParamCardLog=array(
                                                    'transID' 	=> $log_init['transID'],// key để biết được record sẽ updated
                                                    'epayStatus' 	=> $purchase_res[$i]['epayStatus'],
                                                    'partnerTransID'=> $purchase_res[$i]['epayTransID'],
                                                    'transIdRes'	=> $purchase_res[$i]['epayTransID'],
                                                    //'merchantID' 	=> $purchase_res[$i]['merchantID'],
                                                    'errorCode' 	=> $purchase_res[$i]['errorCode'],
                                                    'errorMessage' 	=> $purchase_res[$i]['errorMessage'],
                                                    //card info
                                                    'cardNumber'	=> $cardData_array["xcode"],
                                                    'serialNumber' 	=> $cardData_array["xserial"],
                                                    'cardData'	=> $cardData_array["x"],
                                                    'amount'	=> $log_init['cardprice'], // nếu thành công mới save số tiền vào									                                                        
                                                    'expiryDate' 	=> $purchase_res[$i]['expiryDate'],									
                                                    //
                                                    'updated' 	=> date("Y-m-d H:i:s"),
                                                    'statusDesc' 	=> "Thành công",
                                                    'status' 	=> "1"
                                            );
                                    // update customer ID for user table
                                    $aUpdate	= array("epayStatus","partnerTransID","transIdRes","errorCode","errorMessage","cardNumber","serialNumber","expiryDate","cardData","amount","updated","statusDesc","status");
                                    $log3 			= $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog,$aUpdate); //ok							
                                    ///
                                    $cardData_array["Mcontent"]	.= "<b>Thông tin mã thẻ $i</b>:<div class='gd_mathe'><div class='mathe_bor'><div class='mathe' style='height: auto'><p id='fullname'>".$log_init['customerID']."</p><p><strong id='cateName'><span class='red' id='Span1'> ".$purchase_res[$i]['productValue']."</span></strong></p><div class='macode' id='Div1'>".$product['softpinPinCode']."</div><span class='thongtin'>Số seri: <strong id='Strong2'>".$product['softpinSerial']."</strong><br>Hạn sử dụng: <b id='B1'>".$purchase_res[$i]['expiryDate']."</b><br><label id='Label1'>Để nạp tiền nhắn:<b>*100*(Mã nạp tiền)#</b><br>Để kiểm tra TK: <b>*101#</b><br>Chăm sóc KH: 18001090</label><br>Mã GD: <b id='B3'>".$log_init['transID']."</b></span></div><div class='clear'></div></div></div><br>";
                                    // E3.END SAVE LOG SUCCESS							
                                }// end foreach
                                // send mail ok
                                $Mto			= $log_init['email'];
                                $Mtitle			= "[Muathe.vn] Thông tin mua thẻ";
                                //sendMail($Mto,$Mtitle,$cardData_array["Mcontent"]); // gọi hàm sendmail
                                //
                                // Nên trả về json, sau đó truyền qua ajax rồi xử lý tiếp
                                $code 		= 1;
                                $msgs[] 	= "Giao dịch thành công.";
                                if($log_init['money_use_vi']=="1"){ // vi ca nhan
                                    echo json_encode($purchase_res);exit;// must exit here // for ajax
                                }else{
                                    echo json_encode($purchase_res);// no exit // for template
                                }   
                        }else{ // Epay trans ID info failed
                                $purchase_res[1]['epayStatus']		= $result[1]['epayStatus']; // lấy mã thẻ thất bại. 
                                $purchase_res[1]['epayTransID']		= $result[1]['epayTransID'];
                                $purchase_res[1]['errorCode']		= $result[1]['errorCode'];
                                $purchase_res[1]['errorMessage']            = $result[1]['errorMessage'];
                                // E3.START SAVE LOG FAILED
                                $aParamCardLog=array(
                                                'transID' 		=> $log_init['transID'],// key để biết được record sẽ updated
                                                'epayStatus' 	=> $purchase_res[1]['epayStatus'],
                                                'partnerTransID'    => $purchase_res[1]['epayTransID'],
                                                'transIdRes' 	=> $purchase_res[1]['epayTransID'],
                                                'errorCode' 	=> $purchase_res[1]['errorCode'],
                                                'errorMessage' 	=> $purchase_res[1]['errorMessage'],
                                                'updated' 		=> date("Y-m-d H:i:s"),
                                                'statusDesc' 	=> "Thất bại",
                                                'status' 		=> "0"
                                        );
                                // update customer ID for user table
                                $aUpdate	= array("epayStatus","partnerTransID","transIdRes","errorCode","errorMessage","updated","statusDesc","status");
                                $log3 			= $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog,$aUpdate); //ok
                                // E3.END SAVE LOG FAILED
                                $code 		= -1;
                                $msgs[] 	= "Giao dịch thất bại. Vui lòng liên hệ bộ phận kỹ thuật.";
                        } // End result					
                        //print_r($purchase_res);exit;
                        // 2. Gửi email cho user
                } catch (Exception $e) {
                        //echo 'Caught exception: ',  $e->getMessage(), "\n";exit;
                        $code 		= -1;
                        $msgs[] 	= "Caught exception: .".$e->getMessage();
                }				
            }else{
                    // không kết nối dc với hệ thống epay.
                    //echo "Hệ thống đang bận hoặc bảo trì, vui lòng quay lại sau.E001.";exit;
                    $code 		= -1;
                    $msgs[] 	= "Hệ thống đang bận hoặc bảo trì, vui lòng quay lại sau.E001.";
            }// end kết quả sau khi đăng nhập
        } 
        // GET KHO THE EPAY CHO USER DUNG TIEN CUA DOANH NGHIEP
        function getCardFromEpayStoreForDoanhNghiep($data,$log_init,$card_info, &$msgs,$flag=FALSE){
            // CHECK FLAG // GET CARD FROM VI OR FROM PHUONG THUC THANH TOAN
            // IF VI: TRU TIEN USER ELSE KO CAN (IF $FLAG=1: VI, ELSE CAC PTTT)
            //print_r($log_init);exit;
            //// GỌI THƯ VIỆN EPAY (GET MA THE TU KHO THE EPAY)///////////////            
            require_once(APPPATH.'libraries/pay/epay/ItopupClient.php');
            $itopupClient 		= new ItopupClient();
            // 1. Ðăng nhập hệ thống
            $result 			= $itopupClient->signIn();		
            ////////////////////////////////
            // CHECK PRODUCT DETAIL STORE STATUS
            $cardStoreStatus		= $this->CheckProductsDetail($itopupClient,$data['productID'],$data['quantity']);
            // Kết quả sau khi đăng nhập.
            if($itopupClient->errorCode==0)
            {
                    try
                    {
                            $errorCode			= $itopupClient->errorCode;// Ma 0: thanh cong
                            $errorMessage		= $itopupClient->errorMessage;
                            $errortoken			= $itopupClient->token;// Ma cua phien lam viec
                            $requestID 			= $itopupClient->generateRandomRequestID();					
                            // E2.START SAVE LOG KHỞI TẠO GIAO DỊCH SAU KHI LOGIN VÀO EPAY SYSTEM
                            $aParamCardLog=array(
                                            'requestID' 	=> $requestID,
                                            'transID' 		=> $log_init['transID'],// key để biết được record sẽ updated
                                            'updated' 		=> date("Y-m-d H:i:s"),
                                            // card store info
                                            'errorCode' 	=> $cardStoreStatus['errorStoreCode'],
                                            'errorMessage' 	=> $cardStoreStatus['errorStoreMessage'],
                                            //
                                            'cardStore' 	=> "Epay",
                                            //
                                            'statusDesc' 	=> "Chưa hoàn thành",
                                            'status' 		=> "-1"
                                    );
                            // update customer ID for user table
                            $aUpdate		= array("requestID","updated","errorCode","errorMessage","statusDesc","status");
                            $log2 			= $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog,$aUpdate); //ok
                            // E2.END SAVE LOG KHỞI TẠO GIAO DỊCH SAU KHI LOGIN VÀO EPAY SYSTEM
                            // check flag
                            if($flag){                                
                                try{
                                        // 1.0 TRỪ COIN TẠM USER // chi khi su dung vi
                                        $coin_tmp			= $log_init['coin'] - $log_init['cardprice']/TI_LE_QUI_DOI;
                                        $aParamMoneyLog=array(
                                                            'customerID' 	=> $log_init['customerID'],
                                                            'coin' 		=> $coin_tmp,
                                                            'coinPending' 	=> $log_init['cardprice']
                                                    );
                                        // update customer ID for user table
                                        $aUpdate		= array("coin","coinPending");						
                                        $logM1 		= $this->db_user_model->insert_onduplicate_update_User($aParamMoneyLog,$aUpdate); //ok
                                        // update session coin cho user                                    
                                }catch (Exception $e) {
                                        //echo 'Caught exception: ',  $e->getMessage(), "\n";exit;
                                        $code 		= -1;
                                        $msgs[] 	= "Caught exception: .".$e->getMessage();
                                }
                            }    
                            //////////////////////// GỌI HÀM LẤY MÃ THẺ//////////////////////
                            $result				= $this->downloadSoftpin($itopupClient,$data['productID'],$data['quantity'],$requestID);
                            // 1. Gửi kết quả về từ Epay
                            // Epay trans ID info success
                            
                            if($result[1]['epayTransID']>0 && $result[1]['epayStatus']>0){ // có giao dịch và giao dịch hợp lệ
                                    // check flag
                                    if($flag){   
                                        try{
                                                // 2.0 TRỪ COIN THẬT CỦA USER
                                                $aParamMoneyLog=array(
                                                        'customerID' 	=> $log_init['customerID'],
                                                        'coinPending' 	=> 0
                                                );
                                                // update customer ID for user table
                                                $aUpdate		= array("coinPending");
                                                $logM2 			= $this->db_user_model->insert_onduplicate_update_User($aParamMoneyLog,$aUpdate); //ok
                                                // update session coin cho user							                                            
                                                ///
                                        }catch (Exception $e) {
                                                //echo 'Caught exception: ',  $e->getMessage(), "\n";exit;
                                                $code 		= -1;
                                                $msgs[] 	= "Caught exception: .".$e->getMessage();
                                        }	
                                    }    
                                    /////
                                    $i=0;
                                    $cardData_array["x"]			= "";
                                    $cardData_array["xserial"]		= "";
                                    $cardData_array["xcode"]		= "";
                                    $cardData_array["Mcontent"]		= "";
                                    $total							= count($result);
                                    // n mã thẻ được trả về.
                                    foreach ($result as $product)
                                    {
                                        ++$i;
                                        // notice info							
                                        $purchase_res[$i]['epayTransID']		= $product["epayTransID"];
                                        $purchase_res[$i]['epayStatus']			= $product["epayStatus"];
                                        $purchase_res[$i]['errorCode']			= $product["errorCode"];
                                        $purchase_res[$i]['errorMessage']		= $product["errorMessage"];
                                        $purchase_res[$i]['requestID']			= $product["requestID"];
                                        // product info
                                        $purchase_res[$i]['categoryName']		= $product['categoryName'];
                                        $purchase_res[$i]['productID']			= $product['productID'];
                                        if($card_info)
                                        {
                                                $purchase_res[$i]['productValue']	= $card_info[0]->productName;//$product['productValue'];
                                                $purchase_res[$i]['providerID']		= $card_info[0]->providerID;//$product['productID'];                                                
                                        }
                                        $purchase_res[$i]['serviceProviderName']        = $product['serviceProviderName'];
                                        // user info                                        
                                        $purchase_res[$i]['customerID']                 = $log_init['customerID'];
                                        $purchase_res[$i]['email']                      = $log_init['email'];                                        
                                        // card info
                                        $purchase_res[$i]['softpinPinCode']		= $product['softpinPinCode'];
                                        $purchase_res[$i]['softpinSerial']		= $product['softpinSerial'];
                                        $purchase_res[$i]['expiryDate']			= $product['expiryDate'];
                                        $purchase_res[$i]['merchantBalance']		= $product["merchantBalance"];	
                                        if($i<$total)
                                        {
                                                $cardData_array["xserial"]		.= $product['softpinSerial']."@";
                                                $cardData_array["xcode"]		.= $product['softpinPinCode']."@";
                                                $cardData_array["x"]                    .= $product['softpinSerial']."@".$product['softpinPinCode'].";";
                                        }else{
                                                $cardData_array["xserial"]		.= $product['softpinSerial'];
                                                $cardData_array["xcode"]		.= $product['softpinPinCode'];
                                                $cardData_array["x"] 			.= $product['softpinSerial']."@".$product['softpinPinCode'];	
                                        }
                                        // E3.START SAVE LOG SUCCESS
                                        $aParamCardLog=array(
                                                        'transID' 	=> $log_init['transID'],// key để biết được record sẽ updated
                                                        'epayStatus' 	=> $purchase_res[$i]['epayStatus'],
                                                        'partnerTransID'=> $purchase_res[$i]['epayTransID'],
                                                        'transIdRes'	=> $purchase_res[$i]['epayTransID'],
                                                        //'merchantID' 	=> $purchase_res[$i]['merchantID'],
                                                        'errorCode' 	=> $purchase_res[$i]['errorCode'],
                                                        'errorMessage' 	=> $purchase_res[$i]['errorMessage'],
                                                        //card info
                                                        'cardNumber'	=> $cardData_array["xcode"],
                                                        'serialNumber' 	=> $cardData_array["xserial"],
                                                        'cardData'	=> $cardData_array["x"],
                                                        'amount'	=> $log_init['cardprice'], // nếu thành công mới save số tiền vào									                                                        
                                                        'expiryDate' 	=> $purchase_res[$i]['expiryDate'],									
                                                        //
                                                        'updated' 	=> date("Y-m-d H:i:s"),
                                                        'statusDesc' 	=> "Thành công",
                                                        'status' 	=> "1"
                                                );
                                        // update customer ID for user table
                                        $aUpdate	= array("epayStatus","partnerTransID","transIdRes","errorCode","errorMessage","cardNumber","serialNumber","expiryDate","cardData","amount","updated","statusDesc","status");
                                        $log3 			= $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog,$aUpdate); //ok							
                                        ///
                                        $cardData_array["Mcontent"]	.= "<b>Thông tin mã thẻ $i</b>:<div class='gd_mathe'><div class='mathe_bor'><div class='mathe' style='height: auto'><p id='fullname'>".$log_init['customerID']."</p><p><strong id='cateName'><span class='red' id='Span1'> ".$purchase_res[$i]['productValue']."</span></strong></p><div class='macode' id='Div1'>".$product['softpinPinCode']."</div><span class='thongtin'>Số seri: <strong id='Strong2'>".$product['softpinSerial']."</strong><br>Hạn sử dụng: <b id='B1'>".$purchase_res[$i]['expiryDate']."</b><br><label id='Label1'>Để nạp tiền nhắn:<b>*100*(Mã nạp tiền)#</b><br>Để kiểm tra TK: <b>*101#</b><br>Chăm sóc KH: 18001090</label><br>Mã GD: <b id='B3'>".$log_init['transID']."</b></span></div><div class='clear'></div></div></div><br>";
                                        // E3.END SAVE LOG SUCCESS							
                                    }// end foreach
                                    // send mail ok
                                    $Mto			= $log_init['email'];
                                    $Mtitle			= "[Muathe.vn] Thông tin mua thẻ";
                                    //sendMail($Mto,$Mtitle,$cardData_array["Mcontent"]); // gọi hàm sendmail
                                    //
                                    // Nên trả về json, sau đó truyền qua ajax rồi xử lý tiếp
                                    $code 		= 1;
                                    $msgs[] 	= "Giao dịch thành công.";
                                    echo json_encode($purchase_res);//exit;		
                            }else{ // Epay trans ID info failed
                                    $purchase_res[1]['epayStatus']		= $result[1]['epayStatus']; // lấy mã thẻ thất bại. 
                                    $purchase_res[1]['epayTransID']		= $result[1]['epayTransID'];
                                    $purchase_res[1]['errorCode']		= $result[1]['errorCode'];
                                    $purchase_res[1]['errorMessage']            = $result[1]['errorMessage'];
                                    // E3.START SAVE LOG FAILED
                                    $aParamCardLog=array(
                                                    'transID' 		=> $log_init['transID'],// key để biết được record sẽ updated
                                                    'epayStatus' 	=> $purchase_res[1]['epayStatus'],
                                                    'partnerTransID'    => $purchase_res[1]['epayTransID'],
                                                    'transIdRes' 	=> $purchase_res[1]['epayTransID'],
                                                    'errorCode' 	=> $purchase_res[1]['errorCode'],
                                                    'errorMessage' 	=> $purchase_res[1]['errorMessage'],
                                                    'updated' 		=> date("Y-m-d H:i:s"),
                                                    'statusDesc' 	=> "Thất bại",
                                                    'status' 		=> "0"
                                            );
                                    // update customer ID for user table
                                    $aUpdate	= array("epayStatus","partnerTransID","transIdRes","errorCode","errorMessage","updated","statusDesc","status");
                                    $log3 			= $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog,$aUpdate); //ok
                                    // E3.END SAVE LOG FAILED
                                    $code 		= -1;
                                    $msgs[] 	= "Giao dịch thất bại. Vui lòng liên hệ bộ phận kỹ thuật.";
                            } // End result					
                            //print_r($purchase_res);exit;
                            // 2. Gửi email cho user
                    } catch (Exception $e) {
                            //echo 'Caught exception: ',  $e->getMessage(), "\n";exit;
                            $code 		= -1;
                            $msgs[] 	= "Caught exception: .".$e->getMessage();
                    }				
            }else{
                    // không kết nối dc với hệ thống epay.
                    //echo "Hệ thống đang bận hoặc bảo trì, vui lòng quay lại sau.E001.";exit;
                    $code 		= -1;
                    $msgs[] 	= "Hệ thống đang bận hoặc bảo trì, vui lòng quay lại sau.E001.";
            }// end kết quả sau khi đăng nhập
        } 
        // DOWNLOAD SOFTPIN FROM EPAY
	function downloadSoftpin($itopupClient,$productID,$quantity,$requestID){
		//$requestID 		= $itopupClient->generateRandomRequestID();		//Bat buoc phai sinh ra	 
		$result				= $itopupClient->downloadSoftpin($requestID, $productID, $quantity);
		return $result;
		
	}
	// CHECK PRODUCT DETAIL STATUS
	function CheckProductsDetail($itopupClient,$productId,$quantity){
		$result		= $itopupClient->CheckProductsDetail($productId,$quantity);
		return $result;
	}
	// Get card provider
	function  getCardProviders($catID=null)
	{
		// POST VALUE
		$catID 					= $this->input->post('catID');
		if($catID)
		{
			$provider_data		= $this->db_user_model->getCardProviders($catID); // vinaphone
			if($provider_data){
			  foreach ($provider_data as $tmp) {
				  $provider[$tmp->providerID] = $tmp->providerName;
			  }
			  $result		= json_encode($provider);
			}else{
				$result		=-1;
			}			
		}else{
			$result		=-1;
		}
		echo $result;
	}
	// get card price
	function getCardPrice($providerID=null)
	{
		// POST VALUE
		$providerID 					= $this->input->post('providerID');
		if($providerID)
		{
			$price_data		= $this->db_user_model->getCardProducts($providerID); // vinaphone
			if($price_data){
			  foreach ($price_data as $tmp) {
				  $price[$tmp->productID] = $tmp->productName;
			  }
			  $result		= json_encode($price);
			}else{
				$result		=-1;
			}
		}else{
			$result		=-1;
		}
		echo $result;
	}
        /**********************************END KHO THE EPAY***************************************/
        /**********************************START KHO THE SIMPAY***************************************/

        function getCardFromSimpayStore($log_init, &$msgs){
            //15: request time out
            //300: hết thẻ
            //220: amount ko hợp lệ (>5000) hoặc balance < amount
            //130: serviceID ko hợp lệ (xem lại bảng dịch vụ)
            //Lưu ý: paymentID và receiptID chỉ chứa số, <= 10 ký tự
            
            require (APPPATH.'libraries/pay/simpay/simpay.php');
            $simpay = new Simpay();
            
            //------PREPAIR DATA-------------------------------
            $serviceID          = $this->_getServiceIdSimpay($log_init['productID']);
            $temp               = explode('_', $log_init['transID']);
            $paymentID          = $temp[4];
            $receiptID          = time();
            $currentDate        = date("Y-m-d\TH:i:s");
            
            //$debug['serviceID'] = $serviceID;
            //$debug['paymentID'] = $paymentID;
            //$debug['receiptID'] = $receiptID;
            //$debug['transID'] = $log_init['transID'];
            //echo json_encode($debug);exit;
            
            //----------B1.KHỞI TẠO GIAO DỊCH VÀ SAVE LOG-------------
            $aParamCardLog = array(
                    'requestID' => $receiptID,
                    'transID' => $log_init['transID'], // key để biết được record sẽ updated
                    'updated' => $currentDate,
                    // card store info
                    'errorCode' => '',
                    'errorMessage' => '',
                    //
                    'cardStore' => 'simpay',
                    //
                    'statusDesc' => "Chưa hoàn thành",
                    'status' => "-1"
            );
            // update customer ID for user table
            $aUpdate = array("requestID", "updated", "errorCode", "errorMessage", "statusDesc", "status");
            $log2 = $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog, $aUpdate); //ok
            //----------------------------B1.END------------------------
            
            try {
                // 1.0 TRỪ COIN TẠM USER
                $coin_tmp = $log_init['coin'] - $log_init['cardprice'] / TI_LE_QUI_DOI;
                $aParamMoneyLog = array(
                    'customerID' => $log_init['customerID'],
                    'coin' => $coin_tmp,
                    'coinPending' => $log_init['cardprice']
                );
                // update customer ID for user table
                $aUpdate = array("coin", "coinPending");
                $logM1 = $this->db_user_model->insert_onduplicate_update_User($aParamMoneyLog, $aUpdate); //ok
                // update session coin cho user                                    
            } catch (Exception $e) {

                $code = -1;
                $msgs[] = "Caught exception: ." . $e->getMessage();
            }
            
            //-------------GỌI HÀM REQUEST GIAO DỊCH -----------
            $requestSimpay = $simpay->addOffLinePayment($paymentID, $log_init['cardprice'], $serviceID, $pvAccount='', $receiptID, $currentDate);
            //print_r(json_encode($requestSimpay));exit;
            if($requestSimpay['code'] == '90')
            {
                try {
                    //-------TRỪ COIN THẬT CỦA USER----------
                    $aParamMoneyLog = array(
                        'customerID' => $log_init['customerID'],
                        'coinPending' => 0
                    );
                    // update customer ID for user table
                    $aUpdate = array("coinPending");
                    $logM2 = $this->db_user_model->insert_onduplicate_update_User($aParamMoneyLog, $aUpdate); //ok
                    // update session coin cho user							                                            
                    ///
                } catch (Exception $e) {
                    //echo 'Caught exception: ',  $e->getMessage(), "\n";exit;
                    $code = -1;
                    $msgs[] = "Caught exception: ." . $e->getMessage();
                }
                
                //---------GỌI HÀM LẤY MÃ THẺ------------
                sleep(5);//đảm bảo thời gian xử lý bên simpay
                $stringCard = $simpay->getPaymentStatus($paymentID);
                $infoCard = explode('|', $stringCard);
                
                $cardData_array["x"]			= "";
                $cardData_array["xserial"]		= $infoCard[0];
                $cardData_array["xcode"]		= $infoCard[1];
                $cardData_array["Mcontent"]		= "";
                
                //$purchase_res[$i]['epayTransID']		= $product["epayTransID"];
                //$purchase_res[$i]['epayStatus']			= $product["epayStatus"];
                $purchase_res[$i]['errorCode']			= $infoCard[0];
                $purchase_res[$i]['errorMessage']		= $infoCard[1];
                $purchase_res[$i]['requestID']			= $receiptID;
                // product info
                //$purchase_res[$i]['categoryName']		= $product['categoryName'];
                //$purchase_res[$i]['productID']			= $product['productID'];
//                if($card_info)
//                {
//                        $purchase_res[$i]['productValue']	= $card_info[0]->productName;//$product['productValue'];
//                        $purchase_res[$i]['providerID']		= $card_info[0]->providerID;//$product['productID'];                                                
//                }
//                $purchase_res[$i]['serviceProviderName']        = $product['serviceProviderName'];
//                // user info                                        
//                $purchase_res[$i]['customerID']                 = $log_init['customerID'];
//                $purchase_res[$i]['email']                      = $log_init['email'];                                        
//                // card info
//                $purchase_res[$i]['softpinPinCode']		= $product['softpinPinCode'];
//                $purchase_res[$i]['softpinSerial']		= $product['softpinSerial'];
                $purchase_res[$i]['expiryDate']			= $infoCard[2];
                //$purchase_res[$i]['merchantBalance']		= $product["merchantBalance"];	
                
                // E3.START SAVE LOG SUCCESS
//                $aParamCardLog=array(
//                    'transID'           => $log_init['transID'], // key để biết được record sẽ updated
//                    //'epayStatus'        => $purchase_res[$i]['epayStatus'],
//                    //'partnerTransID'    => $purchase_res[$i]['epayTransID'],
//                    ///'transIdRes'        => $purchase_res[$i]['epayTransID'],
//                    'errorCode'         => $purchase_res[$i]['errorCode'],
//                    'errorMessage'      => $purchase_res[$i]['errorMessage'],
//                    //card info
//                    'cardNumber'        => $cardData_array["xcode"],
//                    'serialNumber'      => $cardData_array["xserial"],
//                    'cardData'          => $cardData_array["x"],
//                    'amount'            => $log_init['cardprice'], // nếu thành công mới save số tiền vào									                                                        
//                    'expiryDate'        => $purchase_res[$i]['expiryDate'],
//                    //
//                    'updated'           => date("Y-m-d H:i:s"),
//                    'statusDesc'        => "Thành công",
//                    'status'            => "1"
//                );
//                // update customer ID for user table
//                $aUpdate = array("errorCode", "errorMessage", "cardNumber", "serialNumber", "expiryDate", "cardData", "amount", "updated", "statusDesc", "status");
//                $log3 = $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog, $aUpdate); //ok							
                ///
                $cardData_array["Mcontent"] .= "<b>Thông tin mã thẻ $i</b>:<div class='gd_mathe'><div class='mathe_bor'><div class='mathe' style='height: auto'><p id='fullname'>" . $log_init['customerID'] . "</p><p><strong id='cateName'><span class='red' id='Span1'> " . $purchase_res[$i]['productValue'] . "</span></strong></p><div class='macode' id='Div1'>" . $product['softpinPinCode'] . "</div><span class='thongtin'>Số seri: <strong id='Strong2'>" . $product['softpinSerial'] . "</strong><br>Hạn sử dụng: <b id='B1'>" . $purchase_res[$i]['expiryDate'] . "</b><br><label id='Label1'>Để nạp tiền nhắn:<b>*100*(Mã nạp tiền)#</b><br>Để kiểm tra TK: <b>*101#</b><br>Chăm sóc KH: 18001090</label><br>Mã GD: <b id='B3'>" . $log_init['transID'] . "</b></span></div><div class='clear'></div></div></div><br>";
                // E3.END SAVE LOG SUCCESS
                
                $Mto			= $log_init['email'];
                $Mtitle			= "[Muathe.vn] Thông tin mua thẻ";
                //sendMail($Mto,$Mtitle,$cardData_array["Mcontent"]); // gọi hàm sendmail
                //
                // Nên trả về json, sau đó truyền qua ajax rồi xử lý tiếp
                $code 		= 1;
                $msgs[] 	= "Giao dịch thành công.";
                echo json_encode($purchase_res);exit;
                }
            else
            {
                // B3.START SAVE LOG FAILED
                $aParamCardLog = array(
                    'transID'           => $log_init['transID'], // key để biết được record sẽ updated
                    'errorCode'         => $requestSimpay['code'],
                    'errorMessage'      => $requestSimpay['msg'],
                    'updated'           => date("Y-m-d H:i:s"),
                    'statusDesc'        => "Thất bại",
                    'status'            => "0"
                );
                // update customer ID for user table
                $aUpdate = array("errorCode", "errorMessage", "updated", "statusDesc", "status");
                $log3 = $this->db_billing_model->insert_onduplicate_logbilling_update($aParamCardLog, $aUpdate); //ok
                // E3.END SAVE LOG FAILED
                $code = -1;
                $msgs[] = "Giao dịch thất bại. Vui lòng liên hệ bộ phận kỹ thuật.";
//                $msg = '';
//                foreach ($msgs as $m){
//			$msg.="$m<br/>";			
//		}
//		$msg	= json_encode(array("code"=>$code,"msg"=>$msg));
//                echo $msg;exit;
            }
            

        }
        /**********************************END KHO THE SIMPAY***************************************/
        /**********************************START KHO THE FPT***************************************/
        function getCardFromFPTStore(){
            
        }
        /**********************************END KHO THE FPT***************************************/
        /**********************************START GET SERVICE ID***************************************/
        function _getServiceIdSimpay($productID){
            $serviceID = '';
            
            //ma the
            $viettel        = array(1,2,3,4,5,6,7,8);
            $sfone          = array(9,10,11,12,13,14,15,16);
            $vinaphone      = array(17,18,19,20,21,22,23,24);
            $mobiphone      = array(25,26,27,28,29,30,31,32);
            $vnmobile       = array(82,83,84,85,86,87,88,89);
            $vcoin          = array(41,42,43,44,45,46);
            $gate           = array(57,58,59,100,101,102,103);
            $zing           = array(69,70,73);
            //$mega           = array(94,95,96,97,98,99);
            //$beeline        = array(74,75);
            
            if(in_array($productID, $viettel))
                $serviceID = 9852;
            if(in_array($productID, $sfone))
                $serviceID = 9854;
            if(in_array($productID, $vinaphone))
                $serviceID = 9603;
            if(in_array($productID, $mobiphone))
                $serviceID = 9851;
            if(in_array($productID, $vnmobile))
                $serviceID = 9853;
            if(in_array($productID, $vcoin))
                $serviceID = 9856;
            if(in_array($productID, $gate))
                $serviceID = 9858;
            if(in_array($productID, $zing))
                $serviceID = 9857;
            
            return $serviceID;
        }
        /**********************************END KHO THE FPT***************************************/
	/////////////////////////////END BUY CARD BY EPAY ///////////////////////////////	
    	
   
}

/* End of file admin/cpanel.php */
/* Location: ./system/application/controllers/admin/cpanel.php */